我试图通过以下方式操作样式表:
GeckoFXWebBrowser.Document.StyleSheets
如前面提到的here,但清除或添加任何规则,抛出与JSContext相关的异常,我也尝试使用nsIStyleSheetService
,类似于here提到的内容如下:
Dim SSS = Gecko.Xpcom.CreateInstance(Of Gecko.nsIStyleSheetService)("@mozilla.org/content/style-sheet-service;1")
Dim mUri = Gecko.IOService.CreateNsIUri("myCSSUri")
SSS.LoadAndRegisterSheet(mUri, Gecko.nsIDOMWindowUtilsConsts.USER_SHEET)
但这也引发了与COM相关的异常异常。
我在DocumentCompleted事件中尝试了所有这些。
这里有什么问题吗?或者如何完成任务? (GeckoFX 29)
答案 0 :(得分:1)
自编写FAQ条目以来,Firefox已经进行了一些安全性更改,这是最初异常的原因。
特此查看Geckofx 29 unittests:
[Test]
public void GetCssRules_DoesNotThrowException()
{
GeckoStyleSheet styleSheet = _browser.Document.StyleSheets.First();
GeckoStyleSheet.StyleRuleCollection cssRules = null;
Assert.DoesNotThrow(() => { cssRules = styleSheet.CssRules; });
Assert.DoesNotThrow(() => { cssRules.Insert(0, "#blanc { color: white }"); });
Assert.DoesNotThrow(() => { cssRules.RemoveAt(0); });
Assert.DoesNotThrow(() => { cssRules.Clear(); });
}
至于使用nsIStyleSheetService的第二种方法:
Dim mUri = Gecko.IOService.CreateNsIUri("myCSSUri")
如果指定有效的uri,可能会更好。 (例如http://www.google.com)