我已經使用C++實現了一個IE擴展。它的功能是在網頁的head標籤中注入javascript,只要點擊擴展圖標。我已經使用execScript
方法進行腳本注入。
它工作正常,但當我刷新網頁,或者當我點擊網頁上的任何鏈接,或者當我輸入另一個URL時,注入的腳本消失。
我不希望腳本消失,我希望它在Web瀏覽器內持久存在。
我該如何做到這一點?我是新的IE擴展開發,任何幫助將不勝感激。
謝謝。IE擴展插入網頁中的javascript
STDMETHODIMP CBlogUrlSnaggerAddIn::Exec(
const GUID *pguidCmdGroup, DWORD nCmdID,
DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut){
HRESULT hr = S_OK;
CComPtr<IDispatch> spDispDoc;
hr = m_spWebBrowser->get_Document(&spDispDoc);
if (SUCCEEDED(hr)){
CComPtr<IDispatch> spDispDoc;
hr = m_spWebBrowser->get_Document(&spDispDoc);
if (SUCCEEDED(hr) && spDispDoc){
CComPtr<IHTMLDocument2> spHTMLDoc;
hr = spDispDoc.QueryInterface<IHTMLDocument2>(&spHTMLDoc);
if (SUCCEEDED(hr) && spHTMLDoc){
VARIANT vrt = {0};
CComQIPtr<IHTMLWindow2> win;
hr = spHTMLDoc->get_parentWindow(&win);
CComBSTR bstrScript = L"function fn() {alert('helloooo');}var head = document.getElementsByTagName('head')[0],script = document.createElement('script');script[script.innerText ? 'innerText' : 'textContent'] = '(' + fn + ')()';head.appendChild(script);head.parentNode.replaceChild(script,'script');";
CComBSTR bstrLanguage = L"javascript";
HRESULT hrexec = win->execScript(bstrScript,bstrLanguage, &vrt);
}
}}
調用'execScript'總是在頁面加載 – Grundy
腳本獲取只有當我在擴展圖標點擊注入。 – user3173103
@Grundy請看看代碼,並建議您希望我在代碼中添加更改。 – user3173103