今天是 stackoverflow 社區的好日子。我有一個非同小可的問題。 為了顯示網頁內容,我們使用了ActiveX。我們決定改用QWebEngine,但面臨的問題是:
ActiveX允許我們:
ActiveX允許我們:
- 在QAxObject中保存HTML錨點 監聽錨的點擊事件提取并改變錨點的屬性("id","href")
代碼示例:
CComPtr<IHTMLDocument2> m_htmlDocument;
CComPtr<IHTMLElementCollection> htmlAnchorsCollection。
QSignalMapper m_anchorClickMapper
QList<QPointer<QAxObject>> m_anchors。
...
//連接錨點的映射和AnchorClicked()信號。Id將是一個引數。
connect(& m_anchorClickMapper, SIGNAL(mapped(QString)), SIGNAL(AnchorClicked(QString)) )。
...
m_htmlDocument->get_anchors(&htmlAnchorsCollection)。
...
for (auto i = 0; i < anchor_count; i)
{
CComPtr<IDispatch> disp;
if (SUCCEEDED(htmlAnchorsCollection-> item(CComVariant(i), CComVariant(0), & disp))
{
auto anchor = new QAxObject(disp, this)。
auto id = anchor->property("id").toString()。
/For anchors with an id, listen to click() events and emit AnchorClicked()
if (!id.isEmpty()
{
m_anchorClickMapper. connect(anchor, SIGNAL(onclick(), SLOT(map())。
m_anchorClickMapper.setMapping(anchor, id)。
m_anchors << anchor;
}
}
使用錨點的作業
for(auto & anchor : m_anchors)
{
auto id = anchor->property("id").toString()。
if (id.startsWith("cta")
{
auto href = anchor->property("href").toString() 。
//向href添加附加引數。
anchor->setProperty("href", href);
}
完整的HTML:
<! DOCTYPE html><html lang="en"> <head>
<腳本 src="https://code.jquery.com/jquery-3.3.1.min. js"完整性="sha256-FgpCx/KJQlLNfOz92ta31o/NMYxltwRo8QtmkMRdA78=" crossorigin="anonymous"> </script>
<!--[if lte IE 9]>
<script type="text/javascript" src="/js/html5shiv-min.js"> </script>
<script type="text/javascript" src="/js/flexibility.js"> </script>
<![endif]-->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href=".../css/fonts.css" rel="styleheet">。
<meta name="application-name" content="Pentagon">
<meta name="msapplication-TileColor" content="#"/span>>
<meta name="msapplication-TileImage" content="/images/mstile-144x144.png">
<meta name="msapplication-square70x70logo" content="/images/mstile-70x70.png"/span>>
<meta name="msapplication-square150x150logo" content="/images/mstile-150x150.png"/span>>
<meta name="msapplication-wide310x150logo" content="/images/mstile-310x150.png"/span>>
<meta name="msapplication-square310x310logo" content="/images/mstile-310x310.png"/span>>
<meta name="description" content="">
<meta name="keywords" content=""/span>>
<meta property="og:url" content="">
<meta property="og:site_name" content="Pentagon">
<meta property="og:description" content="" >
<meta property="og:image" content=""/span>>
<meta property="og:title" content="什么是新?|五角大樓">。
<title>模板中的影像一鍵通|五角大樓</title>。
<meta name="robot" content="noindex">
<link rel="styleheet" href=".../css/300000_template_medium one-button-image.css">。
</head>
<body>
<div id="nav">
<div id="logo">
<img class="logoImage" src=".../images/logoDark.svg" alt="五角大樓標志">
</div>
<a id="close" onclick="window.close()" href="#"/span>>
<img class="closeImg" src="./images/closeDark.svg" alt="close">
</a>
</div>
<div class="content">
<div class="contentImage"/span>>
<img class="topImage" src="http://127.0.0.1/acquistion-conversion.svg" alt=">
</div>
<div class="contentCopy">
<div class="copyHeader">
<h1>訊息 1</h1>
</div>
<div class="copyBody"/span>>
<p class="copyBodyText"> English body</p>
</div>
</div>
<div class="copyCta">
<a id="{cta_id}}" class="cta cta-link" href="https://www. google.com/" onclick="window.close()" target="_blank">English CTA1</a>
<a id="{cta_id}}" class="cta cta-inapp" href="javascript。 void(0)" onclick="window. close()">英語CTA1</a>
</div>
</div>
<! -- javascript:void(0) -->
</body></html>
是否可以用QWebEngine做類似的事情? 關鍵要求:
- 抓取錨點的點擊事件 。
- 了解哪個錨點被點擊(根據名稱,我們可以啟動內部的C 邏輯) 。
- 有可能更新錨點的href 。
uj5u.com熱心網友回復:
答案是:
QWebEnginePage::runJavaScript()。
QWebChanell轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310175.html
標籤:
