我有一个JavaScript文件,可以在网站上嵌入小部件。我希望能够使用以下格式的URL调用此小部件:
http://domain.com/widget.js?variable=test
在JS脚本中,我希望能够读取URL参数'variable'的值,这种情况是'test',并在JS输出的HTML代码中使用它。我尝试使用window.location但是返回主网页的URL而不是正在调用的URL来加载脚本。
任何想法JS代码在传递的参数中读取的内容是什么?提前谢谢!
答案 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);
}