在safari下面javascript的location.href()不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在safari下面javascript的location.href()不起作用相关的知识,希望对你有一定的参考价值。

在设置里往下拉,进入safari条目,进入“高级”,里面有个javascript,打开开关即可。 参考技术A var url = location;
alert(url);
location = "http://www.baidu.com/"; //跳转到百度

在 Chrome 中打开 url 并关闭 Safari 选项卡

【中文标题】在 Chrome 中打开 url 并关闭 Safari 选项卡【英文标题】:Open url in Chrome and close Safari tab 【发布时间】:2015-07-19 16:09:41 【问题描述】:

我在网上找到了这段代码:

javascript:location.href="googlechrome"+location.href.substring(4);

如果将该代码放在 Safari 的书签中,它将打开 Chrome 浏览器并加载用户在 Safari 中的当前网页。

但我想要的是当用户点击书签时,标签会在 Safari 中关闭,然后在 Chrome 中打开。有这种可能吗?

【问题讨论】:

你可以尝试类似javascript:location.href="googlechrome"+location.href.substring(4)+';close() 的方法(我还没有测试过)。 【参考方案1】:

您可以使用window.close() 关闭当前选项卡。

javascript:location.href="googlechrome"+location.href.substring(4); window.close();

但请注意,如果您的网址以https:// 而不是http:// 开头,那么您解析网址的方式将不起作用。

这是一个使用URI.js将当前URL中的协议替换为googlechrome的示例,这应该比仅使用location.href.substring(4)更可靠。

<!DOCTYPE html>
<html>

  <head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.7.2/URI.min.js"></script>
    <script>
      function closeSafariAndOpenChrome()
      
        var chromeProtocol = 'googlechrome';
        var redirectedUrl = URI(location.href)
           .protocol(chromeProtocol);
        location.href = redirectedUrl;
        window.close();
      
    </script>

  </head>

  <body>
    <a href="javascript:closeSafariAndOpenChrome();">Click here to open chrome</a>
  </body>

</html>

【讨论】:

close() 应该可以工作,因为window 是默认的全局对象,所以window.close() 和只是close() 在功能上是等效的

以上是关于在safari下面javascript的location.href()不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 中打开 url 并关闭 Safari 选项卡

关闭标签页Chrome / Safari浏览器-Javascript

如果在 iOS 9+ 上的 Safari 中手机上安装了应用程序,如何从 Javascript 检查?

如何在javascript中获取准确的原始域地址

window.location 在 Safari 上调用弹出空对话框

Safari 浏览器在重定向 window.location 时崩溃