如何在jQuery Mobile 1.4.5中获取当前页面URL?

时间:2017-03-29 17:25:17

标签: javascript jquery jquery-mobile mobile

请不要将此标记为重复。我已经尝试了StackOverflow上建议的所有方法,但没有一个工作。它们都给我引用页面的URL,而不是当前页面。或者他们根本不工作。甚至window.location.href也会返回引用页面URL,而不是当前页面URL。我使用的是jQuery Mobile 1.4.5。

例如,我说我在page1.php上,然后点击了指向page1.php?getvar = 42的链接。第1页看起来像这样:

<!doctype html>
<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.css">
    <script src="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js"></script>
</head>
<body><div data-role="page" data-dom-cache="false">
<a href="page1.php?getvar=42">Click Here</a>
<?php if ($_GET['getvar']=='42'): ?>
<script>
console.log(window.location.href);
console.log(document.location.href);
console.log($.mobile.activePage.data('url'));
</script>
<?php endif ?>
</div></body></html>

当我点击上一页中的链接时,我会在控制台中查看它的内容。我明白了:

http://hostname/page1.php
http://hostname/page1.php
/page1.php

我还尝试在jQuery $(document).ready()函数中将这些调用包装到console.log()中,但结果没有变化。

<script>
$(function() {
    console.log(window.location.href);
    console.log(document.location.href);
    console.log($.mobile.activePage.data('url'));
});
</script>

正如您所看到的,这些都不是完整的网址。链接到不同的文件时也是如此。因此,它不会影响URL上具有GET变量的页面。我期待看到/page1.php?getvar=42

我发现Stack Overflow上的主题提出了同样的问题,但没有一个答案对我有用。也许他们正在使用不同版本的jQuery Mobile。我可以看到你正在使用jQuery 1.4.5。

到目前为止,我找到的唯一解决方案是通过输入data-ajax =&#34; false&#34;来关闭jQuery mobile中页面的jj加载。在父容器上。但必须有更好的方法。

(顺便说一下,我需要这个的原因是我可以重新加载当前页面。但是目前所有重新加载当前页面的尝试都会让我回到引用页面。这就是原因。)

2 个答案:

答案 0 :(得分:0)

尝试以下功能。我在我的项目中使用了这种代码的平衡,并且表现良好。

  var getUrlParameter = function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;
    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
  };

答案 1 :(得分:-2)

答案是在setTimeout()调用中包装window.location.href,如下所示:

int

但是,在$(document).ready()调用内部包含不起作用。

相关问题