【问题标题】:jquery load() issue with ie7 ie8ie7 ie8 的 jquery load() 问题
【发布时间】:2011-09-16 18:28:10
【问题描述】:

您好,这段代码由于某种原因无法在 ie7/ie8 下运行。

$('#cnt').load('./tiles/pages/'+ $name +'.php #'+$lang, showNewContent());

在 php 文件中检索 id 为 $lang 的部分似乎有问题。该代码适用于所有其他浏览器,如果我这样称呼它,它适用于 ie7/ie8:

$('#cnt').load('./tiles/pages/'+ $name +'.php', showNewContent());

我不喜欢那样。

知道为什么 ie7/ie8 会这样吗?好的 ie7 我知道 => 这是废话 :-)

现在 php 文件只包含普通的 html5,看起来像这样:

<article id="de">
        <header>
            <h2>Your article heading</h2>
        <p>Lorem ipsum dolor sit amet.</p>
        </header>
        <h3>A smaller heading</h3>
            <p>Lorem ipsum dolor sit amet</p>   
        <h3>A smaller heading</h3>
            <p>Lorem ipsum dolor sit amet</p>
        <footer>
        <h3>About the author</h3>
            <p>Lorem ipsum dolor sit amet</p>
        </footer>
</article>
<article id="en">
        <header>
            <h2>Your article heading</h2>
        <p>Lorem ipsum dolor sit amet.</p>
        </header>
        <h3>A smaller heading</h3>
            <p>Lorem ipsum dolor sit amet</p>   
        <h3>A smaller heading</h3>
            <p>Lorem ipsum dolor sit amet</p>
        <footer>
        <h3>About the author</h3>
            <p>Lorem ipsum dolor sit amet</p>
        </footer>
</article>

更新:

看起来,是 HTML5 标签把它扔掉了???我正在使用modernizr,有人想尝试一下吗?在 dom 中只加载了 &lt;article id="de" /&gt;,其余的被忽略了。

【问题讨论】:

  • 也许去掉php和#之间的空格?反正只是猜测......我讨厌ie =(
  • @Francisco,这是一个开始
  • 包括脚本的其余部分,$name / $lang 等于什么,这是 php 回显 javascript 吗?
  • $lang 在这种情况下将是“de”或“en”。 $name 将是引用 url 的文件名 slug,例如“home”。因此它会尝试加载 'home.php #de' 这应该加载
    如上所示。

标签: jquery html internet-explorer-8 internet-explorer-7 modernizr


【解决方案1】:

更新 1

你说不带 # 调用代码可以正常工作,所以由于使用 load 方法和 ID 选择器,你实际上是在获取所有文档,但是 jQuery 只会将代码保留在指定的元素 ID 内,你可以简单地调用 load没有 ID 选择器的方法,然后只保留您需要的元素并自己删除其余元素。


也许 URL 中的空格是问题所在,你能试着避开它吗?

喜欢

$('#cnt').load('./tiles/pages/'+ $name +'.php%20#'+$lang, showNewContent());

$('#cnt').load('./tiles/pages/'+ $name +'.php%2520#'+$lang, showNewContent());

【讨论】:

  • 您好 Jose,这不是 URL 中的空格。正如api.jquery.com/load 一样,无论如何都不应该。我注意到,如果我将 html5 标签替换回“普通”div 和 p 标签,它也适用于 ie7 和 ie8
  • 我更新了我的答案,我认为您可以在没有选择器的情况下加载文档并仅保留您想要的元素,使用 .remove() 删除其余元素,或者将您需要的元素复制到某处,然后使用 .empty() 清除所有内容并附加您之前复制的元素。
  • 是的,我可以,但如果它应该按照 jquery 文档中的说明工作,那就太麻烦了。我让它在没有任何 html5 标签的情况下工作,所以我想这对我有用......
【解决方案2】:

可能为时已晚,但您是否尝试在新加载的 html 上重新应用modernizr?

【讨论】:

  • 你太晚了 =) 我想我用的是普通的 xhtml =) 但无论如何感谢你的回答 =)
猜你喜欢
  • 2012-11-23
  • 2013-05-13
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2012-12-05
相关资源
最近更新 更多