组合来自多个javascript块的代码会导致错误
Combining code from multiple javascript blocks causes error?
我们在我们的网站中使用以下跟踪代码进行第三方跟踪。代码是从第三方站点复制的,工作正常,但请注意,它被分成三个javascript标记块。由于这些块是紧挨着的,所以我假设可以将代码合并到一个块中,并且一切正常(我希望在AJAX回调部分中调用此代码)。然而,当我组合代码时,我得到一个"未捕获的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 -->
我假设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"));
如果您不知道,这将创建一个新的script
元素并将其添加到文档中。它会像这样:
<script src='http://www.mongoosemetrics.com/jsfiles/js-correlation/mm-getvar.js' type='text/javascript'></script>
你不能访问脚本中定义的变量,这些变量动态地包含在同一个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);
});
还要记住,这是一个跟踪脚本。如果在DOM加载之后添加它(无论出于何种原因),它可能无法正常工作。也许他们还提供了一些通过Ajax加载参数的方法(应该在他们的文档中提到)。
相关文章:
- 解析云代码错误:解析.错误{代码:141,消息:“未调用成功/错误”}
- Visual Studio代码错误-未能加载jshint库
- 是我的“;给我发电子邮件”;按钮代码错误
- 按钮创建无法定位功能代码错误
- 双重可乐挑战,JavaScript代码错误
- JavaScript数组,代码错误
- 在 cordova 项目中,我正在使用文件传输插件上传个人资料照片,它总是返回代码 1 错误
- JavaScript 代码错误:图像不显示
- 基本程序的JavaScript代码错误(猜谜游戏)
- IMACROS 将 iim 代码转换为 javascript 后代码错误
- Javascript代码错误
- Javascript简单代码错误
- Perl CGI代码错误
- 这是尝试解析带有时刻的 ASP.NET 日期.js库的错误还是我的代码错误
- JS,PHP,MySQL代码错误用于数学运算
- Parse.com云代码错误:尝试更新用户时未调用success/Error
- Javascript代码错误显示未定义的值
- JavaScript表单验证代码错误
- Adbrite什么都没出现.可能的代码错误
- Jquery代码错误:Undefined不是一个函数