我正在尝试创建一个沙箱,我可以在其中检查跟踪像素是否已成功执行。
本质上,成功的像素触发会创建对外部 JavaScript 文件的请求。当此脚本正确运行时,它会创建以下内容:
<script async="true" type="text/javascript" src="a.adroll.com/j/roundtrip.js"></script>
我该如何检测呢?有什么建议吗?
我正在尝试创建一个沙箱,我可以在其中检查跟踪像素是否已成功执行。
本质上,成功的像素触发会创建对外部 JavaScript 文件的请求。当此脚本正确运行时,它会创建以下内容:
<script async="true" type="text/javascript" src="a.adroll.com/j/roundtrip.js"></script>
我该如何检测呢?有什么建议吗?
如果您尝试检测是否已将跟踪像素添加到您的页面并成功加载,您可以在 DOM 中找到它并使用该.complete
属性检查图像是否已完成加载。
如果您尝试检测是否已调用某些外部 javascript,则不能直接执行此操作,除非代码留下一些状态,您可以询问它已被调用,或者可能在调用有问题的代码替换它之前破解它使用您自己的函数,该函数可以记录被调用的函数,然后调用原始函数。
如果没有关于您的问题的更多详细信息(实际代码和 HTML),我们无法提供更多细节。
我看到您在评论中添加了更多信息。如果您想知道是否已加载特定脚本,那么您可以查看该脚本并查看它定义了哪些全局符号并测试这些全局符号之一是否存在。如果它们没有被定义,那么脚本还没有被加载。如果它们被定义,那么它已经定义了。
例如,如果脚本 (roundtrip.js) 定义了一个名为的全局函数__adroll
(它看起来像该脚本所做的那样),您可以使用以下命令测试它的存在:
if (window.__adroll) {
// symbol __adroll is defined
}
要测试此变量是否存在于与您的主机页面位于同一域的 iframe 中,您必须获取该 iframe 的窗口对象。使用id="iframe"
您的代码示例,您可以这样做:
var iframe = document.getElementById("iframe_");
var iframWin = iframe.contentWindow || iframe.contentDocument;
if (iframeWin && iframeWin.__adroll) {
// symbol __adroll is defined in the iframe
} else {
// symbol __adroll is either not defined in the iframe or
// the iframe window is not accessible for cross-domain security reasons
}