Qt で 1 つのタブのブラウザーを使用していますが、問題が発生しました。
外部 Web サイトにつながる Web 上のリンクは、新しいタブで開くように設定されています (taget='_blank' を使用)。ただし、私のブラウザにはタブが 1 つしかないため、これらのリンクは非アクティブになっています。
JavaScript (QWebFrame::eveluateJavaScript) を挿入することで、リンクを同じタブで強制的に開くことができると思いますが、それは非効率的な解決策のようです。
すべてのリンクを強制的に同じタブ/ウィンドウで開くようにする Qt のネイティブな方法はありますか?
編集:
loadFinished(bool) を再実装することでネイティブな方法を思いつきました:
void MyBrowser::loadFinished(bool ok) {
if (!ok) {
return;
}
QWebFrame* frame = webView->page()->mainFrame();
if (frame!=NULL) {
QWebElementCollection collection = frame->findAllElements("a[target=_blank]");
foreach (QWebElement element, collection) {
element.setAttribute("target", "_self");
}
}
}
もっと良い方法があれば、私はそれを見てうれしいです。