導航:首頁 > 編程語言 > cwebbrowser執行js

cwebbrowser執行js

發布時間:2025-09-23 08:28:52

① vb6使用Webbrowser1,點擊網頁裡面的按鈕,觸發網頁的js時,觸發vb中定義的事件

看了抄你的提問我也有襲了疑問:

  1. 1.htm有幾個?

  2. Set mICustomDoc = Me.WebBrowser1.Document
    mICustomDoc.SetUIHandler Me

這個代碼裡面,SetUIHandler方法來自何方?可能是你自己寫了個加強型類模塊?


看到「(這個頁面結構我是無許可權改動的,我只有許可權改動vb中的代碼)」這句我就望而卻步了,我的辦法是廢棄掉HTM文件里的所有執行代碼,HTM文件只負責布局,執行代碼都集中到VB程序里。


還有個辦法是找到mICustomDoc.SetUIHandler Me的逆操作,文本框(如果能)取得焦點,就採取該逆操作,使得文本框能夠輸入。文本框取得焦點的時候最好添加個遮布來屏蔽頁面其他元素,如果這樣,文本框也就不如沒有好。

② webbrowser 執行網頁中的JS

在界面上拖入QAxWidget並指定控制項為{8856F961-340A-11D0-A96B-00C04FD705A2},這個值可以通過OleView.exe查到然後通過IHTMLWindow2介面的execScript方法執行java

在界面上拖入QAxWidget,注意這里不建議直接在UI設計界面指定控制項,否則可能引起QtCreator崩潰
建議在代碼中動態設置,如:
ui->axWidget->setControl("Shell.Explorer"); ui->axWidget->dynamicCall("Navigate(QString)", "C:/1.html");當然,上面的"C:/1.html"是我測試的頁面

這里的辦法是通過IHTMLWindow2介面的execScript方法執行JavaScript函數。可惜的是這個方法不支持函數返回值
#include <MsHTML.h> { QAxObject *document = ui->axWidget->querySubObject("Document"); IHTMLDocument2 *doc2; document->queryInterface(QUuid(IID_IHTMLDocument2), (void**)&doc2); if (doc2) { IHTMLWindow2 *win2 = nullptr; if (doc2->get_parentWindow(&win2) == S_OK) { BSTR s1 = SysAllocString(L"Test()"); BSTR s2 = SysAllocString(L"JavaScript"); VARIANT ret; win2->execScript(s1, s2, &ret); SysFreeString(s2); SysFreeString(s1); } } }
JavaScript函數如下
<script language="javascript" type="text/javascript"> function Test() { alert("你調用了全局函數Test"); } </script>

③ C# 的cefsharp 里的ChromiumWebBrowser執行js

你可以把這個js 寫在網頁載入的事件上,或者在生成窗口的時候帶入一個js文件,他也會去執行,用這個來封裝應用程序會導致安裝包很大慎用。

閱讀全文

與cwebbrowser執行js相關的資料

熱點內容
分布式文件夾 瀏覽:180
同一文件夾內多個excel文件匯總 瀏覽:271
軟體不升級就不能用了 瀏覽:666
fdc文件放在cad什麼位置 瀏覽:350
修改java中的jar包 瀏覽:688
nodejs獲取當前url 瀏覽:603
新建電腦桌面文件刷新成2個 瀏覽:527
道道通文件名 瀏覽:265
php連接mysql配置文件 瀏覽:48
如何刪除表格中使用文件 瀏覽:729
cwebbrowser執行js 瀏覽:456
手機qq發文件超過上限 瀏覽:776
javaurl截取文件名 瀏覽:589
net中的元數據是什麼意思 瀏覽:615
什麼讀書的app推薦 瀏覽:493
怎麼用手機編程貓做游戲 瀏覽:386
使用的數據類型有哪些 瀏覽:351
源文件畫冊 瀏覽:970
java掃描文件內容 瀏覽:131
ie開發人員工具調試 瀏覽:477

友情鏈接