【问题标题】:Can I disable JS in a UIWebView? (Objective C)我可以在 UIWebView 中禁用 JS 吗? (目标 C)
【发布时间】:2018-07-27 21:30:54
【问题描述】:

我正在使用 Xcode 8 为 iOS 编写一个简单的 RSS 阅读器,并为 iOS 10.0 构建。

我允许用户保存网页以供离线阅读;但是,当没有互联网连接时,本地 HTML 文件需要很长时间才能加载,因为我正在加载它们的 UIWebView 会尝试解析图像等外部资产(或者至少,我认为它正在这样做)。我认为在没有互联网连接时禁用 JS 可以解决这个问题,但我不知道该怎么做,也没有找到太多关于此事的信息。

tl,dr: 有没有办法在 UIWebView 中禁用 javascript?

谢谢

【问题讨论】:

  • 更新:使用 WKWebView 作为LGP 建议速度问题已经消失,所以我根本不需要禁用 js。

标签: javascript ios objective-c uiwebview


【解决方案1】:

如果您正在为 iOS 10.0 构建,您应该改用 WKWebView。它支持禁用javascript,也是推荐使用的组件。

首先创建首选项对象。您需要在创建 Web 视图之前进行设置。

WKPreferences *preferences = [[WKPreferences alloc] init];
preferences.javaScriptEnabled = NO; // Here its set

// Other things you might want to disable
preferences.javaScriptCanOpenWindowsAutomatically = NO;

然后创建包含首选项的配置对象。

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.preferences = preferences;

然后创建您的网络视图。

WKWebView *webView = [[WKWebView alloc] initWithFrame:frame configuration:configuration];

Read more about WKWebView here

【讨论】:

  • 哦,我明白了,谢谢。只是出于好奇,有什么办法可以用旧的 UIWebView 做到这一点?
  • 不,我不知道。
  • 实际上 WKWebView 由于某种原因无法识别 javaScriptEnabled 属性,我做错了吗?我按照本指南进行设置:iostpoint.wordpress.com/2016/08/05/implement-wkwebview-in-ios
  • 好吧,无论哪种方式,我遇到的问题都已解决(请参阅我的操作上的评论),所以除了为了学习之外,没有什么太大的关系。非常感谢!
  • 对不起!我太快了。该属性可用,但在您在配置中设置的首选项对象上。请注意,您应该使用带有配置参数的初始化程序,否则它将不起作用。我已经更新了答案。
猜你喜欢
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多