相关疑难解决方法(0)

WKWebView和window.open

似乎网站上的很多链接都在他们的onclick处理程序中使用window.open,但WKWebView似乎完全忽略了window.open.

这有解决方法吗?

我尝试将javaScriptCanOpenWindowsAutomatically首选项设置为true,但这似乎没有帮助

ios swift wkwebview

17
推荐指数
1
解决办法
9748
查看次数

Facebook登录按钮在WKWebView中不起作用

我们正在开发iOS 8.0及更高版本的应用程序.此应用程序需要身份验证(或用户注册).在网站上,我们使用html表单注册和登录用户.这些形式是敏感的.用户还可以单击"使用Facebook登录"按钮以使用FB凭据登录.这个按钮是用FB的SDK for Javascript(v2.4)实现的

因此,我们不希望在我们的iOS应用程序上实现注册和日志的本机屏幕,但我们宁愿实现一个带有WKWebView元素的视图控制器来处理这种浏览体验.

但是,我们注意到,当用户点击"使用Facebook登录我"按钮时,没有任何反应.FB打开以询问用户登录和授予权限的典型弹出窗口永远不会出现.

以下是我们如何初始化WKWebView:

class LoginViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
var webView: WKWebView
@IBOutlet weak var cancelButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(webView)
    webView.setTranslatesAutoresizingMaskIntoConstraints(false)
    let height = NSLayoutConstraint(item: webView, attribute: .Height, relatedBy: .Equal, toItem: view, attribute: .Height, multiplier: 1, constant: 0)
    let width = NSLayoutConstraint(item: webView, attribute: .Width, relatedBy: .Equal, toItem: view, attribute: .Width, multiplier: 1, constant: 0)
    view.addConstraints([height, width])

    loadDefaultUrl()
}

required init(coder aDecoder: NSCoder){
    let config = WKWebViewConfiguration()
    config.preferences.javaScriptCanOpenWindowsAutomatically = …
Run Code Online (Sandbox Code Playgroud)

ios facebook-javascript-sdk swift

9
推荐指数
3
解决办法
4652
查看次数

在Safari中打开WKWebview target ="_ blank"链接

我试图让使用斯威夫特和WKWebviews打开,有一个链接我的混合iOS应用程序target="_blank",或者如果URL中包含http://,https://mailto:在移动Safari浏览器.

这个答案我得到这个代码.

func webView(webView: WKWebView!, createWebViewWithConfiguration     configuration: WKWebViewConfiguration!, forNavigationAction navigationAction:     WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! {
    if navigationAction.targetFrame == nil {
        webView.loadRequest(navigationAction.request)
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

首先,这对我没有任何作用.其次,我希望它在新窗口中打开.我发现这个代码应该做那样的事情......

if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") {
     UIApplication.sharedApplication().openURL(requestUrl)
}
Run Code Online (Sandbox Code Playgroud)

我如何把这两个放在一起让它们起作用?我需要添加什么来使ViewController声明工作?

ios swift wkwebview

7
推荐指数
3
解决办法
2万
查看次数

WKWebView target ="_ blank"链接在safari ios11,swift 4中打开新选项卡

我知道这个问题已经被问了很多,我想我已经查看了每一篇关于这个问题的帖子,但我仍然无法让它发挥作用.我是swift的新手,我认为这会阻止我从其他答案中调整代码片段.

所以这是我的问题:

我使用WKWebView在我的应用程序中查看网站.当我点击打开新标签的链接时,没有任何反应.我希望在Safari中打开新标签,或者至少在新的wkwebview中打开.我尝试从以下网址实现这个答案:https://stackoverflow.com/a/27391215,并在Safari中打开一个WKWebview target ="_ blank"链接以及许多其他类似的答案,但我没有取得任何进展.我需要做什么才能在swift 4中完成这项工作?

目前我只是因为我无法实现我成功找到的任何其他解决方案:

func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
    if navigationAction.targetFrame == nil {
        webView.load(navigationAction.request)
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有做任何事情.如果有人可以帮我指出正确的方向,我会非常感激.

safari wkwebview swift4 ios11

6
推荐指数
1
解决办法
4736
查看次数

在本机 iOS 中未加载在新窗口或选项卡中打开的链接

我的应用程序中有一个 WKWebView,单击它时 WKWebView 中有一些按钮,未加载新页面。从表面上看,他们正试图打开一个 about_blank 页面。在浏览器中,链接在新页面中打开并加载 URL。

ios swift wkwebview

2
推荐指数
2
解决办法
4018
查看次数

WkWebView 不加载指向 pdf 的链接

WKWebView 未加载链接。我将用户链接到隐私政策页面,该页面有一组链接。这些链接都是由 wix 托管的所有 pdf。在 safari 和 Chrome 上它有效,但在 WKWebView 上无效。当页面加载时,您单击链接,我只是收到一个错误:

Unknown result for URL 0x28157d110 (https)
Run Code Online (Sandbox Code Playgroud)

这就是我加载网络视图的方式...

webView.load(URLRequest(url: URL(string: "https://mywebsite.io/legal")!))
Run Code Online (Sandbox Code Playgroud)

编辑:这与其他问题不同,因为我无意下载 pdf - 我只想以与 Safari 相同的方式显示它。

编辑:我刚刚用 UIWebView(已弃用)和 pdfs 加载替换了 WKWebView。问题在于 WKWebView。Pdfs 是支持 ssl 的 https ->

let req = URLRequest(url: URL(string: "https://mywebsite.io/legal")!)
    legacyWebView.loadRequest(req)
Run Code Online (Sandbox Code Playgroud)

编辑:这里有一个页面How to open a Link to a PDF with wkwebview这表明您必须在打开 pdf 之前知道链接 URL,但我认为这不是真的。

编辑:我实现了 2 个委托方法,包括@Kiril 在下面建议的方法。pdf 的链接仍然打不开。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { …
Run Code Online (Sandbox Code Playgroud)

swift wkwebview

2
推荐指数
1
解决办法
3134
查看次数

如果“target=_blank”,Xamarin Android WebView 不会触发导航

我在 xamarin 中使用 webview,我遵循了许多教程来处理导航,并且一切正常。我的问题是:当锚标记具有 target="_blank" 时,导航事件永远不会被触发。

我看到周围有人给出了一个 javascript 解决方案,它删除了 target=_blank 并将其附加在 href 链接的末尾。

这真的是正确的方法吗?看有线..

谢谢

这是 xamarin.android 渲染器中的初始化

        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
    {
        base.OnElementChanged(e);
        global::Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);
        if (e.OldElement != null)
        {
            Control.RemoveJavascriptInterface("jsBridge");
            ((HybridWebView)Element).Cleanup();
        }            
        if (e.NewElement != null)
        {
            Control.Settings.JavaScriptEnabled = true;
            Control.Settings.DomStorageEnabled = true;
            Control.Settings.JavaScriptCanOpenWindowsAutomatically = true;
            Control.Settings.SetSupportMultipleWindows(true);
            Control.Settings.AllowFileAccessFromFileURLs = true;
            Control.Settings.AllowUniversalAccessFromFileURLs = true;
            Control.Settings.UserAgentString = Control.Settings.UserAgentString  + " crmvw";                
            Android.Webkit.WebChromeClient xCC = new CustChromeWebViewClient(_context);
            Control.SetWebChromeClient(xCC);
            Control.SetWebViewClient(new CrmWebViewClient(this, $"javascript: {JavascriptFunction}"));     
            Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");     
            Control.LoadUrl(((HybridWebView)Element).Uri);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的导航事件,当锚点有 target=_blank 时从未触发 …

android webview xamarin.forms

2
推荐指数
1
解决办法
2695
查看次数