High Sierra WebView 阻止锚标记导航
Posted
技术标签:
【中文标题】High Sierra WebView 阻止锚标记导航【英文标题】:High Sierra WebView blocks anchor tag navigation 【发布时间】:2018-05-04 07:23:21 【问题描述】:我有一个在 WebView 中显示信息的 Mac 应用程序。现在和 Objective-C 中的一个相当老的应用程序,我很快就忘记了。
WebView 包含允许在页面内导航的锚标记,可以通过单击所显示页面中的链接或单击 UI 中的选项卡将 javascript 发送到 WebView。在 High Sierra 中,这不再有效,尽管它没有显示错误。
看来我需要实现isKeyExcludedFromWebScript:
,但我的尝试失败了。
我需要对 WebView 进行子类化吗?将 isKeyExcludedFromWebScript:
和 isSelectorExcludedFromWebScript:
放在包含 WebView 的视图控制器中不起作用 - 它们永远不会被调用。
如果有人有任何建议或示例,我将不胜感激。 恐怕答案是升级应用程序以使用 WKWebView,但我希望能快速解决,直到我有时间这样做。
【问题讨论】:
【参考方案1】:在这里回答我自己的问题,因为我已经制定了解决方案。
问题是我正在将一个 html 字符串加载到 WebView 中,当我尝试使用内部导航链接时,它没有用作前缀的基本 URL,因此锚导航无法正常工作。
在 High Sierra 之前它曾经工作过,所以 WebView 的运作方式肯定有一些新的东西。
解决方案是将 HTML 字符串保存到临时文件,并让 WebView 加载该文件的 URL,而不是直接加载字符串。
这适用于 WebView 和 WKWebView。
【讨论】:
以上是关于High Sierra WebView 阻止锚标记导航的主要内容,如果未能解决你的问题,请参考以下文章
下载macOS high sierra失败,使用已购页面再试一次怎么弄