我用的是Ubuntu 14.04。在
我已经安装了Pipelight这个NPAPI浏览器插件允许我在Firefox中查看Silverlight和基于Flash的新内容。在
然而,这有一个不幸的副作用-所有支持NPAPI插件(如WebKit)的web浏览器也会加载这个插件。在
在程序上,我想禁用所有浏览器插件时,我创建WebKit.WebView-所以我的问题。我该怎么做?在
调查:
我曾经研究过使用WebKit2—这可能是因为WebKit2不支持NPAPI。但是我不能使用这个方法,因为Rhythmbox默认有另一个本地插件WebKit,即我正在创建另一个Rhythmbox插件。当我试图加载两个WebKit.WebView然后进程挂起。在
我已经研究过使用WebKit.WebSettings及其enable-plugins属性,但是在创建WebView之前,您似乎不能应用新的WebSettings实例(因此pipelight浏览器插件已经加载)。在
再一次-我试图通过构造函数分配新的WebSettings实例,但是没有任何乐趣:x = WebKit.WebView(settings=webkit_settings)
当你安装了一个简单的测试程序(网页.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
显示
我已经将这个question提交给Pipelight开发人员,他们已经指出我需要通过WebKit引擎禁用插件。正如你所看到的-我认为WebKit2是我的解决方案,但我不能像上面所说的那样使用它。在
我见过这个stackoverflow question,但我并不是真的禁用了特定的插件-至少我不这么认为-只想禁用所有外部插件
我是用Python3编写的,但我不认为python版本是这里的问题,因为我使用python和Python3解释器运行了测试程序,并且看到了相同的结果。在
我通过编写自己的access()函数来破解这个问题 调用strstrstr(路径名,“/plugins/”);如果返回非null 并将-errent设置为no。在
否则,my access()调用原始access()(系统调用包装器) 从c库。在
在c程序中,这样的函数可以直接实现,对于其他程序来说 可以使用单独的c模块和LD_预加载。。。在
像这样:
相关问题 更多 >
编程相关推荐