2013-04-02 6 views
0

В mytest.html я включаю это:Как получить значение querystring самого javascript?

<html><head> 
<script type="text/javascript" src="/myjavascript.js?foo=bar"></script> 
</head> 
<body>Hi</body> 
</html> 

В разделе myjavascript.js

alert(this.location.search); 

Это показывает строку запроса mytest.html, но я хочу строку запроса самого JavaScript «Foo = бар "или просто" бар ".

Любые идеи относительно того, как это сделать, были бы замечательными. (Я думаю, может быть, мне нужно прочитать html для элемента скрипта и проанализировать этот текст. Но я надеюсь, что это будет более простой способ.)

Я могу использовать JQuery для этого, если есть простой способ.

ответ

1

Когда сценарий запущен, это последнее, что загрузилось на странице. В частности, это также делает его последним элементом скрипта в текущее время.

Таким образом, с учетом этого, попробуйте следующее:

var scripts = document.getElementsByTagName('script'), 
    lastscriptsrc = scripts[scripts.length-1].getAttribute("src"), 
    search = lastscriptsrc.substr(lastscriptsrc.indexOf("?")); 

EDIT: Вы можете также одна линия его, хотя это менее читаемыми:

var search = [].pop.apply(document.getElementsByTagName('script')).getAttribute("src").replace(/.*\?/,""); 
+0

бы 'Defer = "отложить"', возможно, повлиять на это? –

+0

«Когда скрипт запущен, это последнее, что загрузилось на странице». - *Как правило*. Это не всегда так; элементы сценария могут быть добавлены в любом месте с DOM. – Quentin

+0

@SaintGerbil - Это можно сделать. – Quentin

0

Я принял Kolink ответ. Как отмечается в комментариях, я не уверен на 100%, что это будет последний скрипт (кажется, работает). Ниже приведено более подробное описание скрипта src.

Здесь был мой ответ, используя JQuery Kolink ответ, чтобы помочь мне:

var scriptsrc = $("script[src*='myjavascript']").attr("src"); 
var search = scriptsrc.substr(scriptsrc.indexOf("?")); 
alert("search:" + search); 

Большое вам спасибо за помощь в этом.

0

Попробуйте

var qrStr = window.location.search; 
var spQrStr = qrStr.substring(1); 
var arr = new Array(); 
arr = spQrStr.split('&'); 
for (var i=0;i<arr.length;i++) 
{ 
    var queryvalue = arr[i].split('='); 
    alert("Name: "+queryvalue[0]+" Value: "+queryvalue[1]); 
}