【问题标题】:Javascript/Jquery won't change URL parameters in Safari but it will in ChromeJavascript/Jquery 不会更改 Safari 中的 URL 参数,但会更改 Chrome
【发布时间】:2017-11-14 09:07:47
【问题描述】:

我有这个 JQuery/JS 脚本,它根据选择元素中的哪个选项更改 URL 的 $_GET 参数。它在 Chrome 中运行良好,但在 Safari 6.1.6 中不会更改 $_GET 参数或刷新。

 $("#promjena").change(function () {
    var v = $("#promjena").val();
    var href = window.location.href;

    if (v === "1") {
        if (href.includes("?akcija=kontrola")) {
            window.location.href = href.replace("?akcija=kontrola", "?akcija=default");
        } else if (href.includes("?akcija=signal")) {
            window.location.href = href.replace("?akcija=signal", "?akcija=default");
        } else {
            window.location.href = window.location.href + "?akcija=default";
        }
    }
    if (v === "2") {
        if (href.includes("?akcija=default")) {
            window.location.href = href.replace("?akcija=default", "?akcija=kontrola");
        } else if (href.includes("?akcija=signal")) {
            window.location.href = href.replace("?akcija=signal", "?akcija=kontrola");
        } else {
            window.location.href = window.location.href + "?akcija=kontrola";
        }
    }
    if (v === "3") {
        if (href.includes("?akcija=default")) {
            window.location.href = href.replace("?akcija=default", "?akcija=signal");
        } else if (href.includes("?akcija=kontrola")) {
            window.location.href = href.replace("?akcija=kontrola", "?akcija=signal");
        } else {
            window.location.href = window.location.href + "?akcija=signal";
        }
    }

});

【问题讨论】:

  • 您能否通过在更改事件处理程序中执行console.log(v, href) 并检查值来进一步隔离问题?在if之前添加它
  • 控制台日志返回:undefined undefined。
  • 你必须在var v = $("#promjena").val();var href = window.location.href;这两行之后放置console.log。你已经把它放在那里了吗?
  • 对不起,我放错了。这是返回:3http://localhost/papirus/kontrolna_lista/index.php?akcija=kontrola
  • 你可以试试var v = String($("#promjena").val());var v = $("#promjena").val() + "";

标签: javascript jquery html google-chrome safari


【解决方案1】:

一个机会是val() 正在返回一个数字,如果这是您可以解决的问题,您会在 if(v === "1") 中期待一个字符串:

 var v = $('#promjena').val() + ''; //to convert to string if not

另一个机会是support for includes in Safari < 9

如果是这种情况,您可以使用上面页面中提到的 includes 的 polyfill,或者重写您的代码:

if(href.indexOf("?akcija=default") !== -1)

或者使用this answer中的任何其他替代方法

【讨论】:

  • 它进入了 if(v==="1") 但不会超过if (href.includes("?akcija=kontrola")) {。我在 URL 中有 ?akcija="kontrola"。
  • 使用if(href.indexOf("?akcija=default") !== -1) 代替includes (这是对旧版浏览器不支持的Javascript 的新增功能)。但是你可以根据需要 polyfill。
【解决方案2】:

试试下面的

     var v = $("#promjena").attr("value");

     var v = parseInt($("#promjena").attr("value")).toString();

    var v = parseInt($("#promjena").val()).toString();

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2017-05-08
    • 2012-02-11
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2021-05-27
    • 2018-08-02
    相关资源
    最近更新 更多