通过调用URL传递JavaScript参数

时间:2010-08-04 20:25:25

标签: javascript

我有一个JavaScript文件,可以在网站上嵌入小部件。我希望能够使用以下格式的URL调用此小部件:

http://domain.com/widget.js?variable=test

在JS脚本中,我希望能够读取URL参数'variable'的值,这种情况是'test',并在JS输出的HTML代码中使用它。我尝试使用window.location但是返回主网页的URL而不是正在调用的URL来加载脚本。

任何想法JS代码在传递的参数中读取的内容是什么?提前谢谢!

1 个答案:

答案 0 :(得分:3)

使用<script>迭代所有getElementsByTagName元素。通过检查domain.com/widget.js属性,找到标识您的脚本的内容(例如,通过查找src)。从src属性中提取查询字符串。

示例:

function getScriptQuery(identifier) {
 var scripts = document.getElementsByTagName('script'),
     i, curScript;

 for (i = 0; i < scripts.length; ++i) {
  curScript = scripts[i];

  if (curScript.src.match(identifier)) {
   return (curScript.src.match(/\?.*/) || [undefined])[0];
  }
 }
}

alert(getScriptQuery('widget.js'));

解决将数据传递给脚本的原始问题有两种常见的替代方法。

您可以在脚本中引用已知的全局变量,并让调用HTML定义该变量:

<script type="text/javascript">var MyWidgetData={foo:'bar'};</script>
<script src="http://my.widgeteer.net/widget.js"></script>

// widget.js:

alert(MyWidgetData.foo);

您还可以将脚本包装为命名函数,并调用HTML调用该函数:

<script src="http://my.widgeteer.net/widget.js"></script>
<script type="text/javascript">MyWidget({foo:'bar'});</script>

// widget.js:

function MyWidget(data) {
    alert(data.foo);
}