这个JavaScript适用于所有浏览器,除了Internet Explorer!
网页在这里: http://develop.macmee.com/testdev/这个JavaScript适用于所有浏览器,除了Internet Explorer!
我说的是当你点击?在左边,它应该打开一个包含更多内容的框。它在除IE以外的每个浏览器中都这样做!
function question()
{
$('.rulesMiddle').load('faq.php?faq=rules_main',function(){//load page into .rulesMiddle
var rulesa = document.getElementById('rulesMiddle').innerHTML;
var rules = rulesa.split('<div class="blockbody">');//split to chop off the top above rules
var rulesT = rules[1].split('<form class="block');//split to chop off below rules
rulesT[0] = rulesT[0].replace('class=','vbclass');//get rid of those nasty vbulletin defined classes
document.getElementById('rulesMiddle').innerHTML = rulesT[0];//readd the content back into the DIV
$('.rulesMain').slideToggle();//display the DIV
$('.rulesMain').center();//center DIV
$('.rulesMain').css('top','20px');//align with top
});
}
IE的innerHTML内容转换为大写字母,所以你可能无法分割字符串这种方式,因为字符串操作是区分大小写的。通过运行检查内容的真实外观
alert(rulesa);
正确的 - 也许尝试迫使innerHTML toLowerCase()试图拆分()之前。 – liquidleaf 2010-05-18 19:38:50
当我单击该按钮时,我的IE调试器会在您的脚本上引发错误。在这条线:
var rulesT = rules[1].split('<form class="block');//split to chop off below rules
IE停止处理Javascript和说'1' is null or not an object
这可能是因为事先拆分命令不匹配任何东西,所以规则[1]可能是空的/不可靠的。 – liquidleaf 2010-05-19 13:18:50
安德里斯是正确的。而这还不是全部。它也会丢掉属性中的引号。
它是完全不可靠作出关于您从innerHTML
得到的字符串格式的任何假设;浏览器可能会以各种形式输出它 - 其中一些在IE的情况下甚至不是有效的HTML。你找回最初解析的字符串的机会非常低。
一般来说:HTML-string-hacking是一个浪费时间的缺陷。改为使用其节点对象修改HTML元素。你似乎在使用jQuery,所以你有很多实用功能来帮助你。
在任何情况下,您不应该将整个HTML页面加载到#rulesMiddle
。它包括一堆脚本和样式表,以及其他无法进入的头文件。 jQuery允许你选择要插入的文档的哪一部分;你似乎只是想第一.blockbody
元素,所以挑选:
$('#rulesMiddle').load('faq.php?faq=rules_main .blockbody:first', function(){
$('#rulesMiddle .blockrow').attr('class', '');
$('.rulesMain').slideToggle();
$('.rulesMain').css('top', '20px');
});
不知道你解决它,但它在我的丑IE浏览器...(它的V8)
工作的顺便说一句:这是我,还是弹出窗口的寡妇真的,真的真的放缓了这个平台?
在Firefox中它只是将页面重定向到http://develop.macmee.com/testdev/ – Glennular 2010-05-18 19:14:49
你有没有得到任何警告/错误? – zaf 2010-05-18 19:15:59
你是否在脚本中出现错误?如果是的话,你可以在这里发布 – 2010-05-18 19:16:55