从jQuery .load()中检索URL

时间:2011-06-16 09:16:41

标签: javascript jquery url load location

我想在以下设置中检索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()功能时这是不可避免的吗?

7 个答案:

答案 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来实现您想要获得的功能。