我试图用自己的代码复制http://wtikay.com/和其他各个地方的历史嗅探演示。 (这是一个很长的故事。)
我有一些在大多数旧版浏览器中可靠运行的东西(最新的Safari和Chrome版本以及Firefox 4测试版都有防御功能) - 但它在IE7或8中无效(未尝试6),我不能找出原因。当我更改href
元素上的a
属性时,IE似乎并不打算更新其渲染 - 但据我所知,这正是wtikay所做的,并且它有效。
测试文件:
<!doctype html>
<html><head>
<title>gevalt</title>
<style>
body { background-color: gray }
a:link { text-decoration: none; color: black }
a:visited { color: white }
</style>
<body>
<span id="container"><a href="" id="testlink">test</a></span>
<a href="ftp://">minus</a>
<a href="http://www.google.com/">plus</a>
<script>
window.onload = function()
{
var testlink = document.getElementById("testlink");
var results = document.getElementById("results");
var container = document.getElementById("container");
var report = "";
testlink.href = "ftp://";
container.removeChild(testlink);
container.appendChild(testlink);
report += " -" + (testlink.currentStyle || window.getComputedStyle(testlink, "")).color;
testlink.href = "http://www.google.com/";
container.removeChild(testlink);
container.appendChild(testlink);
report += " +" + (testlink.currentStyle || window.getComputedStyle(testlink, "")).color;
results.appendChild(document.createTextNode(report));
};
</script>
<pre id="results">
</pre>
</body></html>
在其运行的浏览器中,“test”和“plus”将为白色(假设您已在该浏览器中访问过www.google.com),单词“minus”将为黑色,并且将打印下面有“-rgb(0,0,0) +rgb(255,255,255)
”之类的东西。在IE中,“test”将是黑色而不是白色,并且在其下方将显示“-black +black
”。或者“test”可能是白色的,但在其下面会显示“-white +white
”。这些都是失败。
非常感谢任何帮助。
答案 0 :(得分:0)
对于记录:要在IE中进行此操作,您必须将<a>
元素替换为全新的元素,每次您希望它注意到href
中的更改,并且必须将新元素添加到文档中。
6,7和8就是这种情况;我没有尝试过v9测试版。
window.onload = function()
{
var testlink;
var results = document.getElementById("results");
var container = document.getElementById("container");
var report = "";
testlink = document.createElement("a");
testlink.href = "ftp://";
container.appendChild(testlink);
report += " -" + (testlink.currentStyle || window.getComputedStyle(testlink, "")).color;
container.removeChild(testlink);
testlink = document.createElement("a");
testlink.href = "http://www.google.com/";
container.appendChild(testlink);
report += " +" + (testlink.currentStyle || window.getComputedStyle(testlink, "")).color;
results.appendChild(document.createTextNode(report));
};