我们在我们的网站中使用以下跟踪代码进行第三方跟踪.代码是从第三方站点复制的,并且工作正常,但请注意它被拆分为三个javascript标记块.由于块是紧挨着的,我假设我可以将代码组合成一个块,并且一切都很好(我想在AJAX回调部分中调用此代码).但是,当我组合代码时,我得到一个"Uncaught ReferenceError:mm_variables not defined".
鉴于代码仍然以相同的顺序和范围执行,我试图理解如何组合标记部分会有什么不同?是否存在我不知道的范围问题?
<!-- Begin Metrics Tracking Code -->
<script type="text/javascript">
var mm_c = 'd76e1f47616000000000000000';
var mm_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");
document.write(unescape("%3Cscript src='" + mm_protocol + "www.mongoosemetrics.com/jsfiles/js-correlation/mm-getvar.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
/* Custom Parameters */
/* MANDATORY default_number Setup Parameter DO NOT REMOVE */
var default_number='8889996666'; /* 10 Digits Only i.e. 8881234567 */
</script>
<script type="text/javascript">
document.write(unescape("%3Cscript src='" + mm_protocol + "www.mongoosemetrics.com/jsfiles/js-correlation/mm-control.php%3F" + mm_variables + "' type='text/javascript'%3E%3C/script%3E"));
</script>
<!-- End Metrics Tracking Code -->
Run Code Online (Sandbox Code Playgroud)
我假设它mm_variables是在加载的脚本中定义的
document.write(unescape("%3Cscript src='" + mm_protocol + "www.mongoosemetrics.com/jsfiles/js-correlation/mm-getvar.js' type='text/javascript'%3E%3C/script%3E"));
Run Code Online (Sandbox Code Playgroud)
如果您不知道,这将创建一个新script元素并将其添加到文档中.它将是这样的:
<script src='http://www.mongoosemetrics.com/jsfiles/js-correlation/mm-getvar.js' type='text/javascript'></script>
Run Code Online (Sandbox Code Playgroud)
您无法访问在同一script元素中动态包含的脚本中定义的变量.
必须首先加载和执行包含的脚本.在当前script块完成之前不会执行它.
您应该能够移动var default_number='8889996666';到第一个块,但最后一行必须位于其自己的块中.
更新:关于您的评论.在这种情况下,您必须执行回调内的最后一行.您可以将其更改document.write为DOM操作.唯一的问题是,如果包含的脚本本身进一步脚本通过,这将不起作用document.write.你必须确保不是这种情况.然后你可以这样做:
var default_number='8889996666',
default_fooBar; // make a global empty variable
makeAjaxRequest(function(parameter) {
default_fooBar = paramter;
var script = document.createElement('script');
script.src = mm_protocol + "www.mongoosemetrics.com/jsfiles/js-correlation/mm-control.php%3F" + mm_variables;
document.getElementsByTagName('head')[0].appendChild(script);
});
Run Code Online (Sandbox Code Playgroud)
另请注意,这是一个跟踪脚本.如果在DOM加载后附加(无论出于何种原因),它可能无法正常工作.也许他们还提供了一些通过Ajax加载参数的方法(应该在他们的文档中提到).
| 归档时间: |
|
| 查看次数: |
268 次 |
| 最近记录: |