我想知道为什么当我添加.Load()方法加载的页面时,Chrome无法正确解析页面
我整合了一个带有完整html,head和body标签的页面,除了我的内容之外,它只是忽略了所有内容。无法集成jquery脚本......
我忽略了什么吗?在加载()时,chrome会过滤出html,head和body标签吗?
第二个问题......是否需要使用完整的html,在集成页面上标记正文标记,或者我可以只传递body标记和脚本之间的所有内容?
编辑:
触发颜色框的元素:
<a class="teaminfo cboxElement" href="news/teaminfo.htm">Lees verder</a>
加载的页面。 (简而言之)
<head>
<title></title>
<link type="text/css" href="/style/style.css" rel="stylesheet" />
<link type="text/css" media="screen" rel="stylesheet" href="/style/style.css" />
<meta name="keywords" content="" />
<script src="/js/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="/js/jquery.colorbox-min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".teaminfo").colorbox();
});
</script>
第3和第4个问题:如果我在页面的body元素中放置一个脚本,它是否会使用调用页面头脚本,并在w3c验证?
答案 0 :(得分:1)
load方法在文档正文中有一个隐含的(不可避免的,我相信)过滤器。这曾经在jQuery网站上记录,但在当前的文档中似乎缺失了。考虑到load将返回的数据放在body中的容器中,很明显为什么它会过滤掉body外的所有内容 - 在文档中包含多个html和/或head元素是非法的,并且它们在任何元素中都是非法的这将包含在文件正文中。
注意:我可以轻松加载出现在文档正文中的脚本元素。也许您需要做的就是将它们从头部移动到片段的主体。需要注意的是,脚本可能需要是您网站的本地脚本。由于安全问题,浏览器可能会拒绝加载通过ajax加载的远程脚本。
答案 1 :(得分:1)
您可以将此作为脚本剥离的解决方法(更新以匹配您发布的代码):
如果您的电话是:
$("#myElem").load("myPage.htm");
您可以尝试添加回调(if you pass params, callback is the third param):
$("#myElem").load("myPage.htm", function(resp) {
$('.teaminfo', resp).colorbox();
});
现在只需将<script src="/js/jquery.colorbox-min.js" type="text/javascript"></script>
放入主页即可。这将仅在响应中的.colorbox();
元素上调用.teaminfo
。
对于另一个问题,是的,你可以只传递体内的内容并看到相同的结果。