Javascript 使用jQuery将HTML页面动态加载到div中
我试图做到这一点,当我单击HTML页面中的链接时,它会使用jQuery将请求的页面动态加载到一个div中 我该怎么做Javascript 使用jQuery将HTML页面动态加载到div中,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图做到这一点,当我单击HTML页面中的链接时,它会使用jQuery将请求的页面动态加载到一个div中 我该怎么做 <html> <head> <script type="text/javascript"> // what can I do for load any url clicked? </script> </head> <body> <div id="content"></div>
<html>
<head>
<script type="text/javascript">
// what can I do for load any url clicked?
</script>
</head>
<body>
<div id="content"></div>
<a href="page1.html">Page 1</a><br />
<a href="page2.html">Page 2</a><br />
<a href="page3.html">Page 3</a><br />
<a href="page4.html">Page 4</a><br />
<a href="page5.html">Page 5</a><br />
<a href="page6.html">Page 6</a><br />
</body>
</html>
//我可以为加载任何单击的url做些什么?
我想您正在寻找该函数。如果愿意,您只需将该函数与绑定到标签或按钮的onclick函数一起使用。尝试使用此函数:
$(document).ready(function(){
$('a').click(function(e){
e.preventDefault();
$("#content").load($(this).attr('href'));
});
});
并确保首先调用此库:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js">
</script>
我认为这样做可以:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".divlink").click(function(){
$("#content").attr("src" , $(this).attr("ref"));
});
});
</script>
</head>
<body>
<iframe id="content"></iframe>
<a href="#" ref="page1.html" class="divlink" >Page 1</a><br />
<a href="#" ref="page2.html" class="divlink" >Page 2</a><br />
<a href="#" ref="page3.html" class="divlink" >Page 3</a><br />
<a href="#" ref="page4.html" class="divlink" >Page 4</a><br />
<a href="#" ref="page5.html" class="divlink" >Page 5</a><br />
<a href="#" ref="page6.html" class="divlink" >Page 6</a><br />
</body>
</html>
jQueryLoad可以工作,但它将从源页面中删除javascript和其他元素。这是有意义的,因为您可能不想在页面上引入错误的脚本。我认为这是一个限制,因为您正在做一个完整的页面,而不仅仅是源页面上的一个div,所以您可能不想使用它。(我不确定css,但我认为它也会被剥离) 在本例中,如果在源页面的主体周围放置一个标记,它将抓住标记之间的任何内容,而不会去掉任何内容。我用和包装我的源页面 此解决方案将获取上述分隔符之间的所有内容。我觉得这是一个比简单负载更健壮的解决方案
var content = $('.contentDiv');
content.load(urlAddress, function (response, status, xhr) {
var fullPageTextAsString = response;
var pageTextBetweenDelimiters = fullPageTextAsString.substring(fullPageTextAsString.indexOf("<jqueryloadmarkerstart />"), fullPageTextAsString.indexOf("<jqueryloadmarkerend />"));
content.html(pageTextBetweenDelimiters);
});
var content=$('.contentDiv');
load(URL地址、函数(响应、状态、xhr){
var fullPageTextAsString=响应;
var pageTextBetweenDelimiters=fullPageTextAsString.substring(fullPageTextAsString.indexOf(“”),fullPageTextAsString.indexOf(“”);
html(pageTextBetweenDelimiters);
});
有一个jQuery插件称之为它:“它是一个ajax,具有真正的永久链接、页面标题和一个完全降级的后退按钮。”
该插件使用HTML5 pushState和AJAX动态更改页面,而无需完全加载。如果不支持pushState,PJAX将执行完整的页面加载,以确保向后兼容性
pjax所做的是监听指定的页面元素,例如调用
元素,使用X-pjax
头或指定的片段获取目标页面
例如:
<script type="text/javascript">
$(document).pjax('a', '#pjax-container');
</script>
如果#pjax container
不是响应中找到的第一个元素,pjax将无法识别内容并对请求的链接执行完整页面加载。要解决此问题,需要将服务器后端代码设置为仅发送#pjax容器
第2页的服务器端代码示例:
//if header X-PJAX == true in request headers, send
<div class="container" id="pjax-container">
Go to <a href="/page1">next page</a>.
</div>
//else send full page
请注意,
fragment
是一个较旧的pjax选项,用于获取请求元素的子元素。您可以使用jQuery的getJSON()或Load();使用后者,您可以引用现有的html文件。有关更多详细信息,请参见您可以通过选项
试着修改一下
<div trbidi="on">
<script type="text/javascript">
function MostrarVideo(idYouTube)
{
var contenedor = document.getElementById('divInnerVideo');
if(idYouTube == '')
{contenedor.innerHTML = '';
} else{
var url = idYouTube;
contenedor.innerHTML = '<iframe width="560" height="315" src="https://www.youtube.com/embed/'+ url +'" frameborder="0" allowfullscreen></iframe>';
}
}
</script>
<select onchange="MostrarVideo(this.value);">
<option selected disabled>please selected </option>
<option value="qycqF1CWcXg">test1</option>
<option value="hniPHaBgvWk">test2</option>
<option value="bOQA33VNo7w">test3</option>
</select>
<div id="divInnerVideo">
</div>
功能MostrarVideo(idYouTube)
{
var contendor=document.getElementById('divInnerVideo');
如果(idYouTube=='')
{contendor.innerHTML='';
}否则{
var url=idYouTube;
contendor.innerHTML='';
}
}
请选择
测试1
测试2
测试3
如果要将默认页面放置在id=“divInnerVideo”
例如:
<div id="divInnerVideo">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/pES8SezkV8w?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>
您有一个开始的iframe
标记,后面是结束的div
标记。这只会将src属性添加到div中。这只会在#content
是iframe或加载网站是非外部网站时起作用。他的所有页面都是本地的,因此在加载div中的页面时不会出现任何问题。
$(document).pjax('a', '#pjax-container', {
fragment: '#pjax-container'
});
<div trbidi="on">
<script type="text/javascript">
function MostrarVideo(idYouTube)
{
var contenedor = document.getElementById('divInnerVideo');
if(idYouTube == '')
{contenedor.innerHTML = '';
} else{
var url = idYouTube;
contenedor.innerHTML = '<iframe width="560" height="315" src="https://www.youtube.com/embed/'+ url +'" frameborder="0" allowfullscreen></iframe>';
}
}
</script>
<select onchange="MostrarVideo(this.value);">
<option selected disabled>please selected </option>
<option value="qycqF1CWcXg">test1</option>
<option value="hniPHaBgvWk">test2</option>
<option value="bOQA33VNo7w">test3</option>
</select>
<div id="divInnerVideo">
</div>
<div id="divInnerVideo">
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/pES8SezkV8w?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>