除了internet explorer,此javascript在所有浏览器中都可以使用!

除了internet explorer,此javascript在所有浏览器中都可以使用!,javascript,jquery,ajax,internet-explorer,Javascript,Jquery,Ajax,Internet Explorer,网页如下: 我是说当你点击按钮的时候?在左边,它应该打开一个包含更多内容的盒子。它在除IE之外的所有浏览器中都能做到这一点 function question() { $('.rulesMiddle').load('faq.php?faq=rules_main',function(){//load page into .rulesMiddle var rulesa = document.getElementById('rulesMiddle').innerHTML;

网页如下:

我是说当你点击按钮的时候?在左边,它应该打开一个包含更多内容的盒子。它在除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
    });
}
函数问题()
{
$('.rulesmidle').load('faq.php?faq=rules_main',function(){//将页面加载到.rulesmidle中
var rulesa=document.getElementById('rulesMiddle').innerHTML;
var rules=rulesa.split(“”);//split将上面的规则切掉

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

alert(rulesa);

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

alert(rulesa);

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

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

var rulesT=rules[1]。拆分(“My IE debugger在我单击该按钮时在脚本上引发错误。在此行:

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

var rulesT=rules[1]。split('Andris是对的。这还不是全部。它还将丢弃属性中的引号

对从
innerHTML
获取的字符串的格式进行任何假设都是完全不可靠的;浏览器可能以各种形式输出它 — 在IE的例子中,其中一些甚至不是有效的HTML。返回最初解析的相同字符串的可能性非常低

一般来说:HTML字符串黑客攻击是一种浪费时间的行为。改为使用HTML元素的节点对象来修改HTML元素。您似乎在使用jQuery,因此有大量实用程序函数可以帮助您

在任何情况下,您都不应该将整个HTML页面加载到
#rulesmidle
中。它包含大量脚本、样式表和其他无法放入其中的标题废话。jQuery允许您选择要插入文档的哪一部分;您似乎只需要第一个
。blockbody
元素,因此请选择:

$('#rulesMiddle').load('faq.php?faq=rules_main .blockbody:first', function(){
    $('#rulesMiddle .blockrow').attr('class', '');
    $('.rulesMain').slideToggle();
    $('.rulesMain').css('top', '20px');
});

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

对从
innerHTML
获取的字符串的格式进行任何假设都是完全不可靠的;浏览器可能以各种形式输出它 — 在IE的例子中,其中一些甚至不是有效的HTML。返回最初解析的相同字符串的可能性非常低

一般来说:HTML字符串黑客攻击是一种浪费时间的行为。改为使用HTML元素的节点对象来修改HTML元素。您似乎在使用jQuery,因此有大量实用程序函数可以帮助您

在任何情况下,您都不应该将整个HTML页面加载到
#rulesmidle
中。它包含大量脚本、样式表和其他无法放入其中的标题废话。jQuery允许您选择要插入文档的哪一部分;您似乎只需要第一个
。blockbody
元素,因此请选择:

$('#rulesMiddle').load('faq.php?faq=rules_main .blockbody:first', function(){
    $('#rulesMiddle .blockrow').attr('class', '');
    $('.rulesMain').slideToggle();
    $('.rulesMain').css('top', '20px');
});

不知道你是否解决了它,但它在我的丑陋IE上起作用…(它是v8)


顺便说一句:是我,还是温开的弹出窗口真的,真的,真的减慢了平台的速度?

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


顺便说一句:是我,还是温打开的弹出窗口真的,真的,真的,真的减慢了平台的速度?

在Firefox中,它只是重定向页面,你有没有收到任何警告/错误?你在ie中有没有脚本错误?如果有,你能在这里发布吗?你为什么不使用
$('#rulesmidle').html()
而不是
document.getElementById('rulesmidle').innerHTML
?你在使用jQuery,好好利用它。我认为@Andris有答案,但你的代码有一点让人困惑,那就是jQuery和直接HTML操作的奇怪混合。我认为你会发现在整个过程中使用jQuery操作属性和HTML更干净。在Firefox中,它只是将页面重定向到您是否收到任何警告/错误?ie中是否出现脚本错误?如果是,您可以将其发布到此处,为什么不使用
$('rulesmidle').html()
而不是
document.getElementById('rulesmidle')).innerHTML
?您正在使用jQuery,好好利用它。我认为@Andris已经找到了答案,但您的代码有一点让人困惑,那就是jQuery和直接HTML操作的奇怪混合。我认为您会发现在整个过程中使用jQuery操作属性和HTML会更干净。对-也许可以尝试强制使用innerHTML在尝试拆分()之前使用toLowerCase()。对-可能在尝试拆分()之前尝试强制innerHTML使用toLowerCase()。这可能是因为之前的拆分命令不匹配任何内容,所以规则[1]可能为空/不存在。这可能是因为之前的拆分命令不匹配任何内容,所以规则[1]可能为空/不存在。