Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么大多数营销标签(Omniture、XE等)都是用document.write()编写的?_Javascript_Html - Fatal编程技术网

Javascript 为什么大多数营销标签(Omniture、XE等)都是用document.write()编写的?

Javascript 为什么大多数营销标签(Omniture、XE等)都是用document.write()编写的?,javascript,html,Javascript,Html,可能重复: 考虑到document.write()的负面影响,为什么大多数跟踪/营销标签都是使用document.write()编写的 我已经考虑了很多,我想到的唯一值得尊敬的想法是,通过在客户端编写它,我们可以保证浏览器不会试图缓存资源。是这样吗?还有其他想法吗?我看不出这种方法在浏览器缓存方面有任何保证。。。?例如,如果它请求图像,浏览器可能仍然选择从缓存中提供该图像,而不管该请求是来自原始源中的IMG标记,还是来自文档。write-writed IMG标记 我的猜测是,他们希望脚本是自包

可能重复:

考虑到document.write()的负面影响,为什么大多数跟踪/营销标签都是使用document.write()编写的


我已经考虑了很多,我想到的唯一值得尊敬的想法是,通过在客户端编写它,我们可以保证浏览器不会试图缓存资源。是这样吗?还有其他想法吗?

我看不出这种方法在浏览器缓存方面有任何保证。。。?例如,如果它请求图像,浏览器可能仍然选择从缓存中提供该图像,而不管该请求是来自原始源中的IMG标记,还是来自
文档。write
-writed IMG标记


我的猜测是,他们希望脚本是自包含的,并且易于部署。很多时候(出于明显的原因),所引用的脚本(例如图像指向的URL)是不同的,这取决于当前页面是否通过安全HTTPS连接加载。如果当前页面是https页面,请加载
https://omniture.com/xxx
,否则,加载
http://omniture.com/yyy
。这很容易用javascript实现,但不能用HTML硬编码。考虑到任何服务器端语言,它都同样容易实现,这将是更好的选择,但我认为他们不想说“继续并以您喜欢的方式实现此功能”,而是希望提供一个尽可能好的解决方案,而不管环境如何,并且依赖项尽可能少。

它与缓存无关。这与脚本提供程序不知道脚本在文档中的位置有关。脚本提供程序不能只执行
document.getElementsByTagName(“脚本”)
并在具有匹配URI的第一个脚本标记后插入HTML,因为它不知道URI是否包含哈希(
http://example.com/blah.js#foo
)或直接托管在第一方服务器上,以减少DNS请求。有一种解决方法,但它涉及到使用捕获错误中暴露的脚本文件名的暗魔法。这一魔法的实现可以在中找到。(

这确实很难看,但它是最具战斗力、最低俗、最能防白痴的方法。“将此内容写到页面上”的范例几乎没有让人惊讶的余地,而且实现工作可靠,至少可以追溯到v3浏览器,可能更早


[编辑]“v3”浏览器,与Firefox3不同,与Netscape 3相同。如果Netscape现在仍然存在,我想它现在应该是版本11了。

使用document.write插入页面的脚本不要阻止其他脚本的执行,这样当外部广告资源插入页面时,页面加载速度不会受到影响。此处的更多信息:

它是在客户端编写的,因为JavaScript是远程托管的(即与网站不在同一台服务器上)。这是一个简单的技术限制。