【问题标题】:<form target="_blank"> not working in iOS 7.0.3<form target="_blank"> 在 iOS 7.0.3 中不工作
【发布时间】:2013-11-22 20:28:48
【问题描述】:

以下代码在 iOS 6.0.1 中完美运行 (使用 iOS 虚拟键盘,我按下了输入框上的“Go”按钮)

<html>
    <body>
        <form action="http://stackoverflow.com/" target="_blank">
            <input type="text" />       
        </form>
    </body>
</html>

但是当我在 iOS 7.0.3 上尝试完全相同的代码时,这根本不起作用。 按下 iOS 键盘上的“Go”按钮后没有反应。

如果我从表单标签中删除 [target="_blank"],那么它可以正常工作。

我不知道这个问题的原因是什么。 有人有同样的问题吗?

【问题讨论】:

    标签: javascript html ios tags ios7


    【解决方案1】:

    Safari iOS 默认会阻止弹出窗口。

    通过设置禁用阻止功能 -> Safari -> 阻止弹出窗口。

    【讨论】:

      【解决方案2】:

      假设 HTML 不在您的控制范围内,一种解决方法是以编程方式删除表单目标属性。在您的 Web 视图委托中实现以下内容:

      - (void)webViewDidFinishLoad:(UIWebView *)aWebView
      {
              NSString *script = @"for (i=0; i<document.forms.length; i++) { document.forms[i].target = null; }";
              [aWebView stringByEvaluatingJavaScriptFromString:script];
          }
      }
      

      【讨论】:

        【解决方案3】:

        这是一个小的 jQuery 解决方法,我在提交时仅在 iOS 上删除了 target="_blank" 属性:

        $('#searchform').submit(function(e) {
          if(navigator.userAgent.match(/(iPod|iPhone|iPad)/i)) {
            $(this).removeAttr('target');
          }
        });
        

        似乎没有更好的解决方案,因为the solution to transit through a temporary a tag 不适用于 iOS 8+。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多