可以跳到修改以获取更新的说明。
我似乎无法将通过document.write()
写出的广告设置为固定位置。除了IE之外,它在所有其他浏览器中都能正常工作,包括IE9。
以下是一个示例:http://htinteractive.com/bottom_bar/demo.html
任何建议都将受到高度赞赏。我的想法已经不多了。
谢谢。
修改
我已将问题缩小到以下我遇到的IE问题。为了简化它......
<style type="text/css">
#temp1
{
position:fixed;
bottom:0;
height:100px;
width:100px;
border:solid 2px red;
}
</style>
<!--WORKS IN IE-->
<div id="temp1">
<script type="text/javascript">
document.write("<scr" + "ipt type=\"text/javascript\">\nif(typeof(cachebuster) == \"undefined\"){var cachebuster = Math.floor(Math.random()*10000000000)}\nif(typeof(dcopt) == \"undefined\"){var dcopt = \"dcopt=ist;\"} else {var dcopt = \"\"}\nif(typeof(tile) == \"undefined\"){var tile = 1} else {tile++}\ndocument.write('<scr'+'ipt src=\"http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;' + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?\"></scr'+'ipt>');\n</scr" + "ipt>");
</script>
</div>
<!--FAILS TO FIX POSITION IN IE-->
<script type="text/javascript">
document.write('<div id="temp1">');
document.write("<scr" + "ipt type=\"text/javascript\">\nif(typeof(cachebuster) == \"undefined\"){var cachebuster = Math.floor(Math.random()*10000000000)}\nif(typeof(dcopt) == \"undefined\"){var dcopt = \"dcopt=ist;\"} else {var dcopt = \"\"}\nif(typeof(tile) == \"undefined\"){var tile = 1} else {tile++}\ndocument.write('<scr'+'ipt src=\"http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;' + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?\"></scr'+'ipt>');\n</scr" + "ipt>");
document.write('</div>')
</script>
无论如何,我真的需要第二种方法来工作,而我正试图弄清楚如何。
感谢。
答案 0 :(得分:2)
也许IE在编写脚本元素之前需要结束temp1
DIV:
<script type="text/javascript">
document.write('<div id="temp1"><' + '/div>');
document.write("<scr" + "ipt type=\"text/javascript\">\nif(typeof(cachebuster) == \"undefined\"){var cachebuster = Math.floor(Math.random()*10000000000)}\nif(typeof(dcopt) == \"undefined\"){var dcopt = \"dcopt=ist;\"} else {var dcopt = \"\"}\nif(typeof(tile) == \"undefined\"){var tile = 1} else {tile++}\ndocument.write('<scr'+'ipt src=\"http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;' + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?\"></scr'+'ipt>');\n</scr" + "ipt>");
</script>
编辑(回复您的评论):
由于您希望广告脚本进入div,因此您必须将document.write
放在一边并以编程方式创建脚本,这样您只需调用appendChild
将其放入div:< / p>
<script type="text/javascript">
document.write('<div id="temp1"><' + '/div>');
if(typeof(cachebuster) == "undefined") {
var cachebuster = Math.floor(Math.random() * 10000000000);
}
if(typeof(dcopt) == "undefined") {
var dcopt = "dcopt=ist;";
} else {
var dcopt = "";
}
if(typeof(tile) == "undefined") {
var tile = 1;
} else {
tile++;
}
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;"
+ dcopt
+ ";tile=" + tile
+ ";sz=728x90;ord=" + cachebuster + "?";
divTemp.appendChild(script);
</script>
请注意,我不能100%确定在重新格式化脚本时没有输入错误,所有这些转义序列...
答案 1 :(得分:1)
未经测试,但似乎应该有效:
<script>
(function(){
var w = window,
d = document,
s = d.createElement('script'),
div = d.createElement('div'),
el = [].slice.call(d.getElementsByTagName('script'), -1),
baseUrl = 'http://ad.doubleclick.net/adj/shz.bloomington/home;pos=728x90_1;';
// end var block
if(!("cachebuster" in w)){
cachebuster = Math.floor(Math.random()*10000000000);
}
dcopt = "dcopt" in w ? "" : "dcopt=ist;";
tile = "tile" in w ? tile+1 : 1;
div.id = 'temp1';
div.appendChild(s);
el.parentNode.inserBefore(div, el);
s.src = baseUrl + dcopt + ';tile=' + tile + ';sz=728x90;ord=' + cachebuster + '?';
})();
</script>
答案 2 :(得分:1)
看起来脚本标记没有像您期望的那样在广告中嵌入广告。 根据IE Developer工具,广告不在您的DIV中,因此无法获得定位。
使用您的示例代码将#temp1更改为A,即可将广告定位到您想要的位置。
问题在于您的广告没有收到广告。如果您可以选择让广告带回ID,那么您可以将自己的风格基于此,或者使用DOM操作将广告放在正确的位置。
更深层次的问题是,让广告脚本在DIV中呈现其内容我只是不确定。
更新
我认为IE的不同之处在于使用SCRIPT标签的方法。使用src属性从另一个位置加载脚本似乎会破坏节点树。
以下是一些证据:
在第一个示例中,您可以看到广告位于DIV内部,而第二个示例则位于DIV内部。在IE中可能有一些规则,即带有src属性的SCRIPT标签属于HEAD,所以它将它们放在你的DIV之外。
答案 3 :(得分:1)
检查您的HTML是否具有DTD格式
答案 4 :(得分:1)
此资源可能会有所帮助
http://ryanfait.com/resources/fixed-positioning-in-internet-explorer/
您还可以使用特定于浏览器的hacks,也可以指定其他文档:
<!--[if lte IE 9]>
答案 5 :(得分:1)
使用“src”属性编写脚本时,某些浏览器会在实际运行外部脚本之前解析以下内联代码。外部脚本的结果将写在div之外,因为内联代码会创建它,这对很多浏览器来说都是如此。
没有简单的方法可以解决这个问题,无论是将div放在html中还是放在外部脚本中。
答案 6 :(得分:1)
如果您将以下内容放在页面顶部会发生什么
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">