href 标记无法在新的 web 视图或移动 Safari 中打开

Posted

技术标签:

【中文标题】href 标记无法在新的 web 视图或移动 Safari 中打开【英文标题】:href tag doesn't open in a new webview or in mobile safari 【发布时间】:2012-07-16 21:17:58 【问题描述】:

我正在与一家制作 iPhone 应用程序的公司合作,他们正试图在他们控制的 web 视图中显示网页。所以我给他们的只是一个 url,他们用某些参数点击它来自定义我返回的页面。 (我的页面可能在 iFrame 或其他一些我不知道的标记中提供。)问题是,当意图让这些链接在移动设备中打开时,该网页上的链接在 web 视图中打开Safari 或在另一个 web 视图中。我尝试将 href 标记的目标更改为 _blank_self_parent_top,但无济于事。

如果不清楚,我无法控制应用。所以我不能尝试像[UIApplication openURL:[NSURL URLWithString:myLink]] 这样的东西。我只能控制要返回的页面的内容。

有什么建议吗?

【问题讨论】:

【参考方案1】:

要保持在同一个 web 视图中,您不应该使用 href。请改用ontouchstart 事件。 示例:

<a ontouchstart="javascript:window.location = '../abc.html';">Click here</a>

不久前,我使用了下面的 javascript 函数,以确保我的 href 仅在 iPad 上浏览时转换为 ontouchstart 事件。

function clearLinks()

var isiPad = navigator.userAgent.match(/iPad/i) != null;
if(isiPad)
    
    var obj = document.getElementById('body').getElementsByTagName('a');
    for(var i =0; i<obj.length; i++)
          
            var url = obj[i].getAttribute('href');
                if(url.indexOf("javascript")==-1)
                
                obj[i].setAttribute('ontouchstart', "window.location='" + url + "'");
                obj[i].setAttribute('href', 'javascript:function()return false;');
                
            
     


【讨论】:

以上是关于href 标记无法在新的 web 视图或移动 Safari 中打开的主要内容,如果未能解决你的问题,请参考以下文章

IOS辅助功能选择的标记不移动

ApplicationManager.CreateObject 无法在新的 AppDomain 中加载程序集

在新的 Sinatra 扩展中集成模型和视图

无法在新的CCW独立安装中创建Clojure项目或命名空间

在列表表视图中放置 3 个复选标记,按下按钮,在新表视图中显示 3 列

滑动以在新的viewcontroller中显示第二张图片