gpt4 book ai didi

javascript - alert() 在 WKWebview 中不起作用 evaluateJavaScript()

转载 作者:技术小花猫 更新时间:2023-10-29 10:37:21 26 4
gpt4 key购买 nike

我不明白为什么我的问题被标记为与 this one 重复,首先我用 evaluateJavaScript 执行 javascript 代码,因为问题标题显示它与那个问题明显不同。更重要的是,我注意到我在问题正文的末尾尝试了那个问题的答案,但没有成功。

我使用 wkwebview.evaluateJavaScript() 函数在 swift3 的 wkwebview 中执行 javascript。但是 alert() 没有打开警报对话框。并且没有错误和问题显示。虽然我可以使用 evaluateJavaScript() 来执行 javascript 代码来修改页面内容。

class WebViewController: UIViewController, WKScriptMessageHandler, WKNavigationDelegate, WKUIDelegate, UIScrollViewDelegate {
var wk:WKWebView!
self.wk.navigationDelegate = self
self.wk.uiDelegate = self
self.wk.scrollView.delegate = self
self.wk.customUserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0"

...
override func viewDidLoad() {
super.viewDidLoad()
...
let config = WKWebViewConfiguration()
self.wk = WKWebView(frame: CGRect(x: frame.minX, y: frame.minY+20, width: frame.width, height: frame.height-70), configuration: config)
self.wk.navigationDelegate = self
...
}


...
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
print("Finished navigation to url \(String(describing: webView.url))")
//self.wk.evaluateJavaScript("document.getElementById('test').innerHTML = 'sssssssssssssss';", completionHandler: nil) //this works well
self.wk.evaluateJavaScript("alert('aaaaaaa');", completionHandler: nil) //this not show the alert dialog
}
...
}

我也引用这个postanswer ,而该问题不在 evaluateJavaScript 上。我为我的 WebViewController 添加了 WKUIDelegate 并为我的 viewDidLoad() 添加了 self.wk.uiDelegate = self,但是没有任何变化。

添加,下面的console.log()将日志放在控制台,而alert()不弹出对话框。 UIAlertController 也可以工作。

self.wk.evaluateJavaScript("alert('aa');console.log('1234');var rect = document.getElementById('liveMovie').getBoundingClientRect();[rect.left, rect.top];") {
(result, error) -> Void in
if((result) != nil)
{
self.player?.view?.frame.origin.x = (result as! Array)[0]
self.player?.view?.frame.origin.y = (result as! Array)[1]
}
}

let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
if(true)
{
}
}))

最佳答案

this answer 中有一个工作示例.看来您可能没有正确实现 WKUIDelegate 方法。

关于javascript - alert() 在 WKWebview 中不起作用 evaluateJavaScript(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com