我想在以下设置中检索page2.html的网址(完整路径):
page1.html
----------
<script type="text/javascript" src="js/jquery_1.6/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#content").load("page2.html");
}
</script>
<div id='content'>
<!-- this is where page2.html will be placed -->
</div>
----------
page2.html
----------
<script>alert(location.pathname)</script> //this should return the full path of page2.html, but now it returns page1.html
This is a line of content that will be loaded in page1.html
----------
我的问题是每当我使用url检索器(如document.URL,window.location或location.pathname)时,它都会返回page1.html的完整路径名。这可能是因为page2.html是在page1.html中加载的,即使我确实请求了page2.html中的URL。
任何人都有这方面的解决方案,或者在使用.load()功能时这是不可避免的吗?
答案 0 :(得分:1)
我认为你不能在Javascript的帮助下做到这一点。 使用加载,您不会呈现页面,而是获取内容。
使用.load
实际上是将数据从URL获取到元素。它使用AJAX调用来获取数据并将其转储到“#content”元素上,然后执行代码。
此时,URL读取page1.html而不是page2.html。
答案 1 :(得分:1)
由于您想在页面加载后执行一些JavaScript来检测路径,为什么不使用回调来显示您已经拥有的路径的值:
$(document).ready(function(){
var path = "page2.html"
$("#content").load(path, function() {
alert(path);
});
})
答案 2 :(得分:0)
您可能需要在page2.html上填充隐藏div中的URL,可能是通过某些服务器端技术,或者您需要自己构建page2.html的完整路径,因为您已经知道了路径to page1.html和page2.html是相对于它的。
答案 3 :(得分:0)
在加载发生后执行javascript,因此警告page1是正确的行为。我能看到的唯一方法是手动将位置存储在第2页的javascript var
中。
答案 4 :(得分:0)
您的<script>alert(location.pathname)</script>
不会向您page2.html
提供,因为您只是加载了page2.html的内容而非页面。我的意思是如果您在iframe中加载pag2.html,那么您将获得page2.html
。现在内容在page1.html上,所以它会提醒你page1.html
答案 5 :(得分:0)
这是因为动态加载的数据被插入到当前页面中。如果您确实需要每次都使用正确的网址,请使用iframe:
<iframe src="page2.html" style="width:100%;height:300px" id="page2_frame">Error</iframe>
但是,如果使用此方法,iframe中的数据只会高达300像素,如果内容较长,则会显示滚动条。
要访问iframe的内容,请使用$("#page2_frame")[0].contentWindow
,它将返回iframe的窗口对象。
广告@米
答案 6 :(得分:0)
您可以使用iframe
代替div
来实现您想要获得的功能。