我们的服务可以在您的网页上添加一些javascript并显示一些跟踪数据,但我希望客户能够在同一页面上嵌入多个嵌入代码实例。
现在的问题是我不能在页面上包含相同的变量名称。
例如:
<script type="text/javascript">
var ttp_number = "1Z8E26R80281495993"; // Tracking number
var ttp_key="123456";
(function(){
document.write('<div id="ttp"></div>');
s=document.createElement('script');
s.type="text/javascript";
s.src="http://c.trackthepack.com/j/e?" + Math.random();
setTimeout("document.getElementById('ttp').appendChild(s);",1);
})()
</script>
然后,如果他们想再次嵌入,我必须更改所有变量名称:
<script type="text/javascript">
var ttp_number_001 = "446888240962"; // Tracking number
var ttp_key_001="123456";
(function(){
document.write('<div id="ttp_001"></div>');
s_001=document.createElement('script');
s_001.type="text/javascript";
s_001.src="http://c.trackthepack.com/j/e?" + Math.random();
setTimeout("document.getElementById('ttp_001').appendChild(s_001);",1);
})()
</script>
我可以让他们更改function()
块的内容,但ttp_number
和ttp_key
需要保持相同的变量名称。
现在,当我在页面上有多个嵌入时,它们都会继承上一个嵌入代码中变量的内容。
所以,最终的问题在这里......我该如何解决这个问题?
答案 0 :(得分:2)
也许将ttp_key和ttp_number存储在数组中?
答案 1 :(得分:1)
为什么不在函数体中声明变量。然后他们只限于那个功能。将脚本转储到HTML中时,仍可以将它们设置为不同的值。
我知道你提到/暗示用户可以编辑这个功能(出于某种原因),但这对我来说似乎是一个伤害的世界,所以我希望事实并非如此。
答案 2 :(得分:0)
为什么要与Math.random()
进行协调? http://c.trackthepack.com/j/e
的JavaScript经常更改吗?如果没有,你应该让缓存完成它的工作。
但是,如果是这样,你能否使它足够动态来检查它所调用的参数并直接使用这些参数,而不是通过全局window
对象中继它们,以便加载http://c.trackthepack.com/j/e?n=446888240962&k=123456
和当脚本运行时,它不需要查找它们吗?