这个javascript适用于每个浏览器,除了Internet Explorer!

时间:2010-05-18 19:12:43

标签: javascript jquery ajax internet-explorer

网页在这里: http://develop.macmee.com/testdev/

我在谈论你点击的时候?在左边,它应该打开一个包含更多内容的盒子。它在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
    });
}

4 个答案:

答案 0 :(得分:6)

IE将innerHTML内容转换为大写,因此您可能无法以这种方式拆分字符串,因为字符串操作区分大小写。通过运行

检查内容的真实含义
alert(rulesa);

答案 1 :(得分:4)

安德里斯是对的。而这还不是全部。它还会丢弃属性中的引号。

完全不可靠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');
});

答案 2 :(得分:0)

当我单击该按钮时,我的IE调试器会在您的脚本上引发错误。在这一行:

var rulesT = rules[1].split('<form class="block');//split to chop off below rules

IE停止处理Javascript并说'1' is null or not an object

答案 3 :(得分:0)

不知道你是否解决了它,但它在我丑陋的IE上工作......(它是一个v8)

顺便说一句:这是我,或者说,打开的寡妇真的,真的,真的在放慢那个平台的速度吗?