2

我正在尝试加载远程 xhtml 页面的内联样式内容。我之前使用了 load ,但这不起作用,因为它将 css 加载到 body 标记内。因此,我试图将样式附加到页面的 head 标记中。

问题是我无法使用 jQuery 选择样式标签。这是我的代码:

            jQuery.get(contenturl, function(data) {
                var css = jQuery(data).find('style').html();
                alert(css);
            });

css 变量始终为空。有任何想法吗?

谢谢,皮特

4

2 回答 2

1

来自jQuery 手册

jQuery( html, [所有者文档] )

没有属性的简单元素,例如“ <div />”,是通过 document.createElement 创建的。通过将字符串分配给 div 元素的 .innerHTML 属性来解析所有其他情况。HTML 字符串不能包含 在 div 中无效的元素,例如html、head、bodytitle元素。

因此将页面的完整 HTML 传递给 jQuery() 函数不起作用。(虽然它实际上在 Opera 中有效,但我猜你想要一个跨浏览器的解决方案。)

我建议<style>使用简单的正则表达式从标签中获取 CSS:

jQuery.get(contenturl, function(data) {
  var styles = data.match(/<style.*?>[\s\S]*?<\/style>/ig);
  $("head").append(styles.join(""));
});

这也应该比创建整个 DOM 树要快得多。

于 2009-06-15T09:36:25.217 回答
0

请记住,这只适用于本地文件。要使用远程文件执行此操作,您需要有一个与您的 jQuery 脚本通信的本地 PHP 脚本。

以下视频教程演示了如何设置本地 php 文件来执行此操作:http ://sampsonvideos.com/video.php?video=24

于 2009-06-12T20:32:56.200 回答