2014-11-13 2 views
0

В настоящее время я пытаюсь создать базовую веб-браузер, чтобы путешествовать по определенному интернет-сайту с использованием qt framework. Я создал класс MyWindow, который наследует QWebView и обновляет функцию createWindow, чтобы справиться с открытием потенциальных всплывающих окон в новом окне браузера. Он хорошо работает при «нормальной» навигации, но когда я сталкиваюсь связи, такие как:createWindow не загружает содержимое flashplayer

<a class="lien_default" href="javascript:popupChat2('foo.php?id=42250')">bar</a> 

Если связанная страница имеет флэш содержание, новое окно создается, но он пуст. Вот код popupChat2:

function popupChat2(page) 
{fenetre=window.open(page,'chat','top=0, left=0, width=800, height=500, resizable=no, toolbar=no, scrollbars=no, status=no, menubar=no, titlebar=no, dependent=yes');} 

Я также попытался сохранить локально связанную страницу, и если я открываю его с очень простой кварт веб-браузер, как это:

main.cpp

#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

mainwindow.cpp

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    QUrl url("file:///[url of the page locally saved with flash player content]"); 
    ui->setupUi(this); 
    QWebSettings *settings = ui->webView->settings(); 
    settings->setAttribute(QWebSettings::JavascriptEnabled, true); 
    settings->setAttribute(QWebSettings::PluginsEnabled, true); 
    settings->setAttribute(QWebSettings::AutoLoadImages, true); 
    settings->setAttribute(QWebSettings::JavaEnabled, false); 
    settings->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); 
    settings->setAttribute(QWebSettings::LocalContentCanAccessFileUrls,true); 

    ui->webView->load(url); 
    ui->webView->show(); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

Это правильно загружена. Ниже приведен код моей функции CreateWindow и код связанной страницы с контентом флэш:

MyWindow *MyWindow::createWindow(QWebPage::WebWindowType type) 
     { 
     Q_UNUSED(type); 
     MyWindow *webView = new MyWindow; 

     webView->settings()->setAttribute(QWebSettings::PluginsEnabled, true); 
     webView->settings()->setAttribute(QWebSettings::JavascriptEnabled, true); 
     webView->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); 
     webView->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); 

     webView->setAttribute(Qt::WA_DeleteOnClose, true); 

     QWebPage *newWeb = new QWebPage(webView); 
     newWeb->setNetworkAccessManager(page()->networkAccessManager()); 

     webView->setPage(newWeb); 
     webView->show(); 

     return webView; 
    } 

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Taverna dei d'Alcontres</title></head> 

<script language="Javascript"> 
function popUpPerso(page) 
{ 
     fenetre = window.open(page, 'perso', 'top=0, left=0, width=650, height=638, resizable=0, toolbar=0, scrollbars=0, status=0, menubar=0, titlebar=0, location=0, dependent=yes'); 
} 

function popUpMains() 
{ 
    fenetre = window.open('/EcranPrincipal.php?l=34&action=14', 'main'); 
} 

function closeWindow() 
{ 
    window.close(); 
} 

function flashTheWindow() 
{ 
    window.GetAttention(); 
} 
</script> 

<body bgcolor="#ffffff" style="margin:0;"> 
<script type="text/javascript"> 
<!-- 
function format(val) { 
    sign = val < 0 ? "-":""; 
    rval = Math.abs(Math.round(val*100)); 
    str = rval.toString(); 
    if(rval < 10) str = "0.0"+str; 
    else if(rval < 100) str = "0."+str; 
    else str = str.substring(0, str.length-2) 
    + "." + str.substring(str.length-2, str.length); 
    return sign+str; 
} 

var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1; 
// Handle all the FSCommand messages in a Flash movie. 

function Taverne_DoFSCommand(command, args) { 
    var TaverneObj = isInternetExplorer ? document.all.Taverne : document.Taverne; 
    if (command == "closeWindow") { 
     closeWindow(); 
    } 
    if (command == "flashWindow") { 
     flashTheWindow(); 
    } 
} 
// Hook for Internet Explorer. 
    if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) { 
    document.write('<script language="VBScript">\n'); 
    document.write('On Error Resume Next\n'); 
    document.write('Sub Taverne_FSCommand(ByVal command, ByVal args)\n'); 
    document.write(' Call Taverne_DoFSCommand(command, args)\n'); 
    document.write('End Sub\n'); 
    document.write('</script\>\n'); 
} 
//--> 
</script> 

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="1200" height="700" id="Taverne" align="middle"> 
<param name="allowScriptAccess" value="always" /> 
<param name="movie" value="http://d2wb3jk3zoe588.cloudfront.net/divers/taverne5.swf?myTaverne=41785&myLogin=sir_marcus&myPassword=a5c358a794d018f6737ecf76cab2c31f&estNoble=0&estTavernier=0&SonEnTaverne=1&html_address=ns36946.ovh.net&html_port=8080&codeLangue=it&nbPlacesTiersEtat=8&nbPlacesNoblesse=1&NomTaverne=Taverna+dei+d%27Alcontres&nbPlacesPersonnelTaverne=1&doitParlerDansTaverne=0&doitOffrirABoireDansTaverne=0&doitMangerDansTaverne=0&typeEtablissement=0&mainsRestantes=10&version=3.0" /> 
<param name="quality" value="high" /> 
<param name="bgcolor" value="#000000" /> 
<param name="menu" value="false" /> 
<embed src="http://d2wb3jk3zoe588.cloudfront.net/divers/taverne5.swf?myTaverne=41785&myLogin=sir_marcus&myPassword=a5c358a794d018f6737ecf76cab2c31f&estNoble=0&estTavernier=0&SonEnTaverne=1&html_address=ns36946.ovh.net&html_port=8080&codeLangue=it&nbPlacesTiersEtat=8&nbPlacesNoblesse=1&NomTaverne=Taverna+dei+d%27Alcontres&nbPlacesPersonnelTaverne=1&doitParlerDansTaverne=0&doitOffrirABoireDansTaverne=0&doitMangerDansTaverne=0&typeEtablissement=0&mainsRestantes=10&version=3.0" quality="high" bgcolor="#000000" menu="false" width="1200" height="700" name="Taverne" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> 
</object> 
</body> 
</html> 

Спасибо

Hicarus

ответ

0

Вы применить QWebSettings на WebView , но они эффективно хранятся в webView->page().

Итак, когда вы делаете webView->setPage(newWeb);, вы возвращаетесь к умолчанию QWebSettings, включая необходимые QWebSettings :: PluginsEnabled.

В самом деле, вы, кажется, не нуждаются в дополнительных QWebPage, просто установите QNAM по умолчанию один:

webView->page()->setNetworkAccessManager(page()->networkAccessManager()); 
Смежные вопросы