在GeckoFX中修改/注入CSS样式表

时间:2015-02-20 21:20:18

标签: css vb.net mozilla geckofx

我试图通过以下方式操作样式表:

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)

1 个答案:

答案 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