【发布时间】:2015-03-16 12:40:45
【问题描述】:
我使用的是 Ubuntu 14.04。
我已经安装了Pipelight - 这个 NPAPI 浏览器插件允许我在 Firefox 中查看 Silverlight 和基于 Flash 的新内容。
然而,这有一个不幸的副作用 - 所有支持 NPAPI 插件(如 WebKit)的网络浏览器也会加载此插件。
以编程方式,我想在创建 WebKit.WebView 时禁用所有浏览器插件 - 因此是我的问题。我该怎么做?
调查:
我已经研究过使用 WebKit2 - 这确实有效,可能是因为 WebKit2 不支持 NPAPI。但是我不能使用这种方法,因为默认情况下 Rhythmbox 有另一个本机插件,即 WebKit,即我正在创建另一个 Rhythmbox 插件。当我尝试同时加载 WebKit.WebView 和 WebKit2.WebView 时,进程挂起。
我查看了使用 WebKit.WebSettings 及其 enable-plugins 属性,但似乎在创建 WebView 之后才能应用新的 WebSettings 实例(因此 pipelight 浏览器插件已经加载)。
再次 - 我尝试通过构造函数分配新的 WebSettings 实例,但没有任何乐趣:x = WebKit.WebView(settings=webkit_settings)
当您安装了 pipelight 的简单测试程序 (web.py) 时,如下所示:
from gi.repository import WebKit
webkit_settings = WebKit.WebSettings.new()
webkit_settings.props.enable_plugins=False
x = WebKit.WebView.new()
x.set_settings(webkit_settings)
然后运行python web.py 会显示一个示例输出
[PIPELIGHT:LIN:unknown] attached to process.
[PIPELIGHT:LIN:unknown] checking environment variable PIPELIGHT_SILVERLIGHT5_0_CONFIG.
[PIPELIGHT:LIN:unknown] searching for config file pipelight-silverlight5.0.
[PIPELIGHT:LIN:unknown] trying to load config file from '/home/foss/.config/pipelight-silverlight5.0'.
[PIPELIGHT:LIN:unknown] unrecognized configuration key 'diagnosticmode'.
[PIPELIGHT:LIN:unknown] sandbox not found or not installed!
[PIPELIGHT:LIN:silverlight5.0] using wine prefix directory /home/foss/.wine-pipelight.
我已将此question 提交给 Pipelight 开发人员,他们表示我需要通过 WebKit 引擎禁用插件。如您所见 - 我认为 WebKit2 是我的解决方案,但我不能如上所述使用它。
我已经看到了这个stackoverflow question,但我并没有真正禁用特定插件 - 至少我不这么认为 - 只是想禁用所有外部插件
我正在使用 Python3 编写此代码,但我认为这里的问题不是 python 版本,因为我已经使用 python 和 python3 解释器运行了测试程序,并且看到了相同的结果。
【问题讨论】: