簡體   English   中英

從XPCOM,C ++調用Javascript函數

[英]Calling Javascript function from XPCOM, C++

我的目標是捕獲組件中的頁面加載,將一些javascript插入到文檔中,然后捕獲onFocus事件。 在一個事件我然后想要調用我注入的javascript函數。

現在我設法解決了大多數問題,我將腳本添加到所有網頁,我可以捕獲onfocus事件。 我無法做的是從我的XPCOM組件(C ++)執行javascript函數。 在我的Internet Explorer BHO中,我使用execScript,效果很好。 有任何想法嗎?

目前我的解決方法是使用setattribute並設置每個輸入元素的onfocus事件來執行javascript函數,但這是侵入性的並覆蓋網頁中現有的onFocus處理程序。 其他想法是受歡迎的。

謝謝。

如果您“將腳本添加到所有網頁”,則腳本可以負責注冊“焦點”事件偵聽器並在焦點事件發生時采取適當的操作。

我不確定為什么你需要調用組件中的內容JS。

如果您確實需要這樣做,請發布您已嘗試過的內容以及“不起作用”的方式。

我相信這用來解決你的問題(前FF6?),我正在尋找一個更新的解決方案。 FF6對導航欄的安全性進行了一些更改,導致無法在那里執行javascript。 https://support.mozilla.org/en-US/questions/876916

在哪里執行java腳本,url可能是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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM