我的目标是捕获组件中的页面加载,将一些javascript插入到文档中,然后捕获onFocus事件。在一个事件上,我想调用我注入的javascript函数。
现在我设法解决了大多数问题,我已将脚本添加到所有网页中,我可以捕获onfocus事件。我无法做的是从我的XPCOM组件(C ++)执行javascript函数。在我的Internet Explorer BHO中,我使用execScript,效果很好。有什么想法吗?
目前我的解决方法是使用setattribute并设置每个输入元素的onfocus事件来执行javascript函数,但这是侵入性的并覆盖网页中现有的onFocus处理程序。欢迎其他想法。
感谢。
答案 0 :(得分:1)
如果您“将脚本添加到所有网页”,则脚本可以注册注册“焦点”事件侦听器并在焦点事件发生时采取适当的操作。
我不确定你为什么需要调用组件中的内容JS。
如果您确实需要这样做,请发布您已经尝试过的内容以及“不起作用”的方式。
答案 1 :(得分:0)
我相信这用来解决你的问题(前FF6?),我正在寻找一个更新的解决方案。 FF6对导航栏的安全性进行了一些更改,导致无法在那里执行javascript。 https://support.mozilla.org/en-US/questions/876916
在哪里执行java脚本,网址可能是javascript:alert('hello');
OnStateChange(nsIWebProgress *aWebProgress, nsIRequest *aRequest, PRUint32 aStateFlags, nsresult aStatus) {
// check for correct state - document load complete...
nsCOMPtr<nsIDOMWindow> domWin;
nsresult rv = aWebProgress->GetDOMWindow(getter_AddRefs(domWin));
nsCOMPtr<nsIWebNavigation> nav = do_GetInterface(domWin);
if (nav)
hr = nav->LoadURI(url, 0, 0, 0, 0);