我想知道是否可以阻止WKWebView显示位置权限提示? (“website.com”想要使用您当前的位置)我相信它正在显示,因为该网站包含谷歌地图。我对在其位置预加载位置不感兴趣,就像其他问题中所示。我只是不想在 WKWebView 中使用位置。有没有办法阻止出现位置权限提示?我尝试过注入以下 JavaScript,但它不起作用。
let contentController = WKUserContentController()
let scriptSource = "navigator.geolocation.getCurrentPosition = function(success, error, options) { // }; navigator.geolocation.watchPosition = function(success, error, options) { // }; navigator.geolocation.clearWatch = function(id) { // };"
let script = WKUserScript(source: scriptSource, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
contentController.addUserScript(script)
let config = WKWebViewConfiguration()
config.userContentController = contentController
webView = WKWebView(frame: .zero, configuration: config)
self.view = webView
一些注意事项:
-
.atDocumentEnd
意味着您的脚本将在页面加载后执行,这可能会导致 javascript 在您劫持位置函数之前要求运行位置;你可能会得到更好的结果.atDocumentStart
- 你有
//
脚本中的序列,这可能会导致脚本的其余部分被解释为注释,从而导致注入不正确的 JS
- 函数的签名似乎与HTML 5 地理定位 API,尽管考虑到我们处于 JS 世界并且函数体是空的,但这可能没有什么区别。
尝试解决上述问题,这可能会导致您需要的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)