Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Передача данных через src


Автор: Dima85 20.9.2010, 10:46
Возможно ли переменные указывать в src javascript таким образом?
Код

<script type="text/javascript" src="/api.js?test=10"></script>


Если да, как ее получить в теле api.js?

Автор: magelan 20.9.2010, 11:35
указать можно, получить - нельзя.

обычно делают так:
Код

<script type="text/javascript" src="/api_j.php?test=10"></script>

а в скрипте пхп делают вставку, которая вытаскивает кверистринг и записывает ее в виде js выражения. пхп - не панацея, может быть использован любой серверный язык.

Автор: Amphiluke 20.9.2010, 13:51
Почему же нельзя?

Если вставить в api.js такие строчки…  smile 
Код

var scr = document.getElementsByTagName("script");
var re = /\bapi\.js(.*)/i;
for (var i = 0; i < scr.length; i++) {
    if (re.exec(scr[i].src))
        alert(RegExp.$1);
}

Автор: magelan 21.9.2010, 01:32
Зло.

Что будем делать в таком случае?
Код

<script type="text/javascript" src="/api.js?test=10"></script>
...
<script type="text/javascript" src="/api.js?test=20"></script>


Автор: Amphiluke 21.9.2010, 08:28
Да оно понятно, что зло. Я говорил лишь о принципиальной возможности «методом изощрений». 

Цитата(magelan @  21.9.2010,  05:32 Найти цитируемый пост)
Что будем делать в таком случае?

Эээ… Раз вы сами спросили (заметьте), то вот усовершенствованное зло.  smile 
Код

apiInstance = (typeof apiInstance == "undefined") ? 1 : apiInstance + 1;
(function() {
    var counter = 1;
    var scr = document.getElementsByTagName("script");
    var re = /\bapi\.js(.*)/i;
    for (var i = 0; i < scr.length; i++) {
        if (re.exec(scr[i].src)) {
            if (counter == apiInstance) {
                alert(RegExp.$1);
                break;
            } else {
                counter++;
            }
        }
    }
})();

 smile  smile 

Автор: Dima85 7.10.2010, 14:01
Почему зло? Будет тормозить браузер?

Автор: Amphiluke 7.10.2010, 16:00
Цитата(Dima85 @  7.10.2010,  18:01 Найти цитируемый пост)
Почему зло?

Потому что по-настоящему качественный код должен быть переносимым и прозрачным, а это типа «хак». smile

Автор: magelan 7.10.2010, 19:01
 smile это не просто хак, это злой хак...

я назвал это злом, потому что параметры скрипт получает не внутри js, а уже снаружи
т.е. некий арбитр, который сверху разбирает аварию из 10 машин, хотя сам в ней не участвует

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)