Qt埋め込みIEはJavaScriptとのインタラクションを実現する.
2603 ワード
仕事は同時に埋め込まれたChrome、IEが必要で、IEに比べて、CEFのオープンソースは簡単に多くなりました.IEを起動するのに時間がかかりました.
ポイント記述 qtでjsと クライアントの前に相互に呼び出し、コード資料はウェブサイトによって整理してテストします.
埋め込み呼び出しIEはQT+=を導入する必要があります. axcontainer(具体的な呼び出しIEは省略)
1、qtはjsを呼び出して、この呼び出し方法は比較的に簡単です.まず、qtを通じてjs方法を呼び出し、IDispatchポインタオブジェクトをjsに保存し、後の参照にすることができます. jsは自動的にqtを呼び出して、通過します. window.external.Get Process ID()方式呼び出し はactiveXを書いて、jsの中で対象を通じて(テストした後に発見して、少し複雑で、このactiveXを登録することを実現しなければならなくて、あるいはqtは自発的にこのactiveXを呼び出します) を呼び出します.
2.1 qtはjsメソッドを呼び出して、qtを呼び出すことを実現します.
2.1.1 qt部分の書き方継承 IDispatchは、主にQuery Interface、GetIDsOfNames、Invokeの3つの方法を実現するために です.は、ポインタをjs に渡すことを実現するために、(1)を呼び出します.
2.1.2 js部分の書き方
2.2.1 qt部分の書き方継承 IDispatchは、主にQuery Interface、GetIDsOfNames、Invokeの3つの方法を実現するために です. IDocHostUID Handlerを継承します.主に実現のためです. GetExternal方法(目的:jsを継承することにより、jsを捕捉してqtを呼び出すことができる) public QingAggatedを継承し、public IObject Safetyは、セキュリティ認証 をバイパスしたという.
2.2.2 js部分の書き方
参考文献:
QxWidgetは、ocxコントロールのjs双方向通信を呼び出します.
https://blog.csdn.net/tianweibooo/article/details/81003188
CAxHostWindowを継承し、IDocHostUID Handlerコントロールブラウザ画面
https://www.xuebuyuan.com/1285504.html
CEF 3開発者シリーズ外編——IEのJSとC++インタラクション
https://www.cnblogs.com/guolixiucai/p/4957521.html
ブラウザプログラミングの二IEコントロールとJSインタラクティブ編
https://blog.csdn.net/river_mu/articale/detail/8692666
(****)VCとJavaScriptの相互作用(三)——JS呼び出しC++
https://blog.csdn.net/charlessimonyi/article/details/50984903
ポイント記述 qtでjsと クライアントの前に相互に呼び出し、コード資料はウェブサイトによって整理してテストします.
埋め込み呼び出しIEはQT+=を導入する必要があります. axcontainer(具体的な呼び出しIEは省略)
1、qtはjsを呼び出して、この呼び出し方法は比較的に簡単です.
QAxObject *document = ui->axWidget->querySubObject("Document");
if(!document)
return ;
QAxObject *parentWindow = document->querySubObject("parentWindow");
{
QAxObject obj(&m_call, this);
parentWindow->dynamicCall("SaveCppObject (QAxObject*)", obj.asVariant());// qt ,
}
2、jsはqtを呼び出して、現在整理してテストする方法は3つあります.2.1 qtはjsメソッドを呼び出して、qtを呼び出すことを実現します.
2.1.1 qt部分の書き方
2.1.2 js部分の書き方
var cpp_obj = null;
// qt
function SaveCppObject(val) {
cpp_obj = val;
alert(val);
val.ShowMessageBox(" , Javascript, ?");
}
function test_method2() {
if (cpp_obj && typeof(cpp_obj) != "undefined") {
var processId = cpp_obj.GetProcessID();
alert(processId);
}
else {
alert("cpp_obj , qt IDispatch ");
}
}
2.2 jsは積極的にqtを呼び出して、window.external.xx方式で呼び出します.2.2.1 qt部分の書き方
2.2.2 js部分の書き方
function test_method1() {
try {
alert(window.external.GetProcessID());
}
catch (e) {
alert(e.message);
}
}
サンプルコード:https://download.csdn.net/download/beyond0851/10872345 参考文献:
QxWidgetは、ocxコントロールのjs双方向通信を呼び出します.
https://blog.csdn.net/tianweibooo/article/details/81003188
CAxHostWindowを継承し、IDocHostUID Handlerコントロールブラウザ画面
https://www.xuebuyuan.com/1285504.html
CEF 3開発者シリーズ外編——IEのJSとC++インタラクション
https://www.cnblogs.com/guolixiucai/p/4957521.html
ブラウザプログラミングの二IEコントロールとJSインタラクティブ編
https://blog.csdn.net/river_mu/articale/detail/8692666
(****)VCとJavaScriptの相互作用(三)——JS呼び出しC++
https://blog.csdn.net/charlessimonyi/article/details/50984903