0

我一直在使用以下动态脚本技术在其他通用脚本中执行特定于站点的子例程,即

siteExtras : function (cid, extras) {
  var script = document.createElement("script");
  script.src = 'https://' + cid + '.mysite.com/' + cid + "_extras.js?" + extras;
  script.type = 'text/javascript';
  var h = document.getElementsByTagName("script")[0];
  h.parentNode.insertBefore(script, h);
},

所以给定以下调用

this.siteExtras('cycles','concept=tandem');

script.src 因此变成

https://cycles.mysite.com/cycles_extras.js?concept=tandem

其中cycles 是我在mysite.com 上创建的特定于客户的子域。

我遇到的问题是我一直假设cycles_extras.js 能够读取它自己的搜索字符串,使用

//cycles_extras.js
function getParameterByName(name) {
    var args = location.search.substr(1).split('&');
    for (var i = 0; i < args.length; i++) {
        var parts = args[i].split('=');
        if (name === parts[0]) {
            return unescape(parts[1]);
        }
    }
    return "";
}
var concept = getParameterByName('concept');
...

但是,当 Cycles_extras.js 被执行时,它会从浏览器中获取它的 location.search,而不是从https://cycles.mysite.com/cycles_extras.js?concept=tandem URL。

我在这里尝试不可能的事情吗?还是缺少什​​么?

4

1 回答 1

1

您可以使用全局命名空间寻求帮助。将值绑定到变量并将其附加到窗口或文档对象。例子,

document.concept = "tandem" 

window.concept = "tandem".
于 2013-09-10T10:36:43.697 回答