【发布时间】:2011-03-09 16:43:15
【问题描述】:
在一个页面上,我使用与 google analitycs 代码类似的语法,将参数传递给另一个脚本。我遍历数组并尝试根据包含的脚本中的参数构造URL的查询部分。
问题是以下还遍历了 javascript 数组对象方法并弄乱了结果查询字符串。
index.html:
<script>
var params = [];
params['first'] = '1';
params['second'] = '2';
(function() {
var vs = document.createElement('script');
vs.async = true; vs.type = 'text/javascript';
vs.src = 'http://my.domain.com/js/includedScript.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vs, s);
})();
</script>
includedScript.js:
function(paramsArray) {
tmpArray = [];
for(i in paramsArray) {
tmpArray.push(i + '=' + escape(paramsArray[i]));
}
var queryString = tmpArray.join('&');
}(params);
我得到(缩短):
queryString == 'first=1&second=2&push&$family=function%20%28%29%20%7B%0A%20%20%20%20return%20lower%3B%0A%7D&$constructor=function%20Array%28%29%20%7B%0A%20%20%20%20%5Bnative%20code%5D%0A%7D&pop=function%20pop%28%29%20%7B%0A%20%20%20%20%5Bnative%20code%5D%0A%7D&push=function%20push%28%29%20%7B%0A%'
我希望:
queryString == 'first=1&second=2'
奇怪的是,在我的本地主机空白页上它运行良好。 index.html 页面上的其他一些 javascript 会与我的代码冲突吗?如何通过仅更改我的代码(最好只更改 includedScript.js 文件)来解决冲突?
提前致谢。
【问题讨论】:
标签: javascript arrays