Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery将HTML页面动态加载到div中_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 使用jQuery将HTML页面动态加载到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页面中的链接时,它会使用jQuery将请求的页面动态加载到一个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&amp;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&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
</div>