2010-08-12 70 views
10

因此,一家领先的跟踪公司需要一个链接来触发它,并将其放在标签中......它会被触发。在head标签中是否会执行html图片标签

<head> 
    <img width=1 height=1 src='http://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=4426&DetailDescription=935626&transactionamount=1&SICustTransType=19172&jscript=0&x10=goog&x9=1&x8=935626&x7=777+665-9999&x6=jones&x5=matt&x4=&x3=Camarillo&x2=Oxnard%2C+CA+Metro+Area&x1=Hidden+Springs&n1=Austin--Bedroom--austin_1_bedroom_apartments-P'> 
</head> 
+2

只是为了精确... HTML不执行,它被解释。 – nico 2010-08-12 16:19:26

回答

13

它不应该。细则中指出:

用户代理通常不会呈现出现在HEAD作为 内容 元素。

spec

但浏览器可以做他们想做的任何事情。

加:

这是规范中的一个松散区域。例如,浏览器可以:

  • 渲染元素
  • 忽略元件从其服务器
  • 加载图像,但它没有被渲染
  • 还是其他什么东西

...和浏览器将符合标准。

那么看看你最喜欢做的浏览器,然后按照您的意愿使用信息...

5

是的。我在FireFox和Chrome中进行了测试,并被要求提供。

+2

注意:Hacky hacky hacky – meawoppl 2015-06-10 19:57:47

2

Web浏览器确实将加载图像。我怀疑它在文档的head中的位置是因为src属性不会加载实际图像,所以它会在网页中显示为破碎的图像。由于它在head中,因此它将被调用,但不会在页面上呈现。

实际上,这就像一个异步脚本调用,因为浏览器将在加载页面时为该图像的src属性的URL执行GET请求。

5

这将取决于浏览器。代码是不正确的,并且如何处理不正确的代码没有标准,所以每个浏览器都要试着去理解它。

我认为大多数浏览器会改变为标签汤模式,并显示他们可以做的任何事情,但有些浏览器可能会忽略该图像。

还有一件事,不正确的代码对页面的其余部分做了什么。如果浏览器更改了代码的解析方式,则可能会对代码的正确性产生负面影响。

1

大多数浏览器不打扰规则,所以它会工作。但是如果你想成为符合标准的,你不应该这样做。 (至少在XHTML中,将<img>标记放置在<head>内是无效的。)

1

从技术上讲,是的,但它更好地放在HTML/JS调用中。

HTML

<body onload="triggerLink('4426');"> 

JAVASCRIPT

function triggerLink(var1){ 
    var receiveReq = getXmlHttpRequestObjectShipping(); 
    var url= 'http://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=' + var1; 

    if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { 
     receiveReq.open("POST", url, true); 
     receiveReq.onreadystatechange = handleLink; 
     receiveReq.send(null); 
    } 
} 
function handleLink(){ 
    //Do This when request finished 
} 

您可以添加变量的 “tiggerLink” 功能,以及通过您的URL参数的其余部分。

0

我建议使用<script>标记而不是<img>标记。那么浏览器是否会请求这个url是没有问题的。只要确保它不会返回任何可能导致脚本错误的东西。

+1

但是你想用JS跟踪用户 – 2017-03-10 16:53:32

0

我会更倾向于使用link并指定为样式表:

<link rel="stylesheet" type="text/css" src="http://track.searchignite.com/si/CM/Tracking/TransactionTracking.aspx?siclientid=4426&DetailDescription=935626&transactionamount=1&SICustTransType=19172&jscript=0&x10=goog&x9=1&x8=935626&x7=777+665-9999&x6=jones&x5=matt&x4=&x3=Camarillo&x2=Oxnard%2C+CA+Metro+Area&x1=Hidden+Springs&n1=Austin--Bedroom--austin_1_bedroom_apartments-P">

所有的应该是确定的,如果TransactionTracking.aspx返回空内容。

2

是的,浏览器会尝试加载img资源,但由于原因不明显。

假设这是为text/HTML,当浏览器的解析器看到<img>元素会认为它遇到了可显示的内容,只是推断</head><body>标签(请记住,这些是HTML的可选项),所以<img>实际上并不在头部元素中,而是在身体元素中。

如果您使用萤火虫或其他检查DOM的方式(如http://software.hixie.ch/utilities/js/live-dom-viewer/),您可以亲自看到是这种情况。

由于img在正文中,因此浏览器不会将其视为与任何正常的<img>元素不同。

0

大多数现代浏览器会将头部和身体向上移动以在身体内留下任何可见内容。 (你可以在检查员看到)。 它看起来非常可靠,它至少会被加载,Google将它用作一个无脚本标记内的像素跟踪系统,所有内部头部(他们建议放置整个代码以及脚本)以防javascript不支持。

0

而不是设置width=1 height=1我会设置style="display:none"以防止渲染并影响布局。

即使使用display:none,所有浏览器都将请求标题中的图像。

我已经检查它:

  • MS边:13
  • IE:8,9,10和11
  • 的Safari:9和6
  • FF:25,47和49
  • 铬:51