View Full Version : [HTML/Javascript] Apertura browser in modalità "applicazione desktop"
Ciao a tutti.
La mia necessità è relativamente semplice:
vorrei aprire una pagina web nel mio browser partendo dal clic di un'icona-collegamento.
Il browser però deve essere aperto:
1) in una nuova finestra se è già stato aperto precedentemente
2) senza barra menu
3) senza barra location
4) senza barre componenti aggiuntivi
Ho inizialmente provato a puntare l'icona-collegamento verso un mio file .html così:
<html>
<head>
<title>redirect</title>
</head>
<script language="JScript">
function myOpen() {
var height = screen.height;
var width = screen.width;
window.open("http://www.google.it",null,"height="+height+",width="+width+",status=yes,resizable=yes,toolbar=no,menubar=no,location=no");
window.close();
}
this.myOpen();
</script>
<body>
</body>
</html>
Il risultato è che:
- IE: appare la barra in alto gialla, devo cliccare e consentire ActiveX, poi parte la nuova finestra con il browser impostato come voglio.
- FF: si carica il file, ma sembra non partire nemmeno la window.open()
Cosa posso fare? Qualcuno ha idee? Questa strada è comunque orribile perchè al clic sull'icona-collegamento l'utente vedrebbe partire il browser, aprirsi la nuova finestra senza barre, chiudere la vecchia.
Vorrei una cosa il più possibile semplice e silente...
Non pensavo davvero di fare tutta questa fatica per una cosa simile :muro:
BeLakor
DanieleC88
22-07-2010, 21:59
Non penso che si possa fare... non senza l'intervento di un qualche eseguibile. Secondo me dovresti pensare di creare un piccolo "launcher" che gestirà i vari casi come desideri.
DanieleC88
22-07-2010, 22:01
Anzi, magari non ce n'è strettamente il bisogno: visto che sei sotto Windows potresti pensare ad uno script in VBScript o JScript che faccia quello che ti interessa. :)
Grazie per l'intervento Daniele.
Sinceramente vorrei più codice e meno teoria :)
Ho in mente almeno 3 alternative diverse, ho scritto un thread generico sperando di ricevere qualche aiuto o altre soluzioni.
Gli eseguibili per aprire il browser non hanno senso, anche perchè ti basta fare un bel about:config da FF per vedere qualche centinaio di parametri di impostazioni che con un eseguibile di pre-chiamata del browser non riusciresti mai ad impostare.
Attendo altre risposte...
BeLakor
DanieleC88
23-07-2010, 14:29
Grazie per l'intervento Daniele.
Sinceramente vorrei più codice e meno teoria :)
Ho in mente almeno 3 alternative diverse, ho scritto un thread generico sperando di ricevere qualche aiuto o altre soluzioni.
Gli eseguibili per aprire il browser non hanno senso, anche perchè ti basta fare un bel about:config da FF per vedere qualche centinaio di parametri di impostazioni che con un eseguibile di pre-chiamata del browser non riusciresti mai ad impostare.
Attendo altre risposte...
BeLakor
Veramente io ti ho dato una risposta molto teorica perché una risposta in codice sarebbe stata specifica per un browser, e io pensavo che tu fossi in cerca di idee... :)
Comunque, la mia idea era o di fare un launcher o un piccolissimo eseguibile "cornice": una finestra tipo con un'area di rendering Gecko/WebKit/Trident integrato che apre soltanto la pagina che vuoi.
Se ti basta un browser (immagino che lavori su Windows) e non ti fai problemi ad avere Internet Explorer, puoi provare con questo VBScript:
Set ie = CreateObject("InternetExplorer.Application")
ie.ShowBrowserBar &H0009s, false
ie.ShowBrowserBar &H000As, false
ie.ShowBrowserBar &H000Bs, false
ie.Visible = True
ie.Navigate "http://www.lamiapagina.it/"
banryu79
23-07-2010, 14:45
...
ie.ShowBrowserBar &H0009, false
ie.ShowBrowserBar &H000A, false
ie.ShowBrowserBar &H000B, false
...
FIXED ;)
DanieleC88
23-07-2010, 14:48
...
ie.ShowBrowserBar &H0009, false
ie.ShowBrowserBar &H000A, false
ie.ShowBrowserBar &H000B, false
...
FIXED ;)
Hmm, io ho preso pari pari da qua: http://msdn.microsoft.com/en-us/library/aa752100%28v=VS.85%29.aspx :D
ciao ;)
Grazie mille ad entrambi!
Vb script nuoooo :D
Win e Linux, IE, FF e Chrome.....
In teoria devo trovare il modo per farlo con tutto.
Spiegami meglio l'idea dell'eseguibile cornice con la chiamata al motore di rendering....
tomminno
23-07-2010, 18:34
Ma perchè un comportamento così invasivo per l'utente?
Con firefox ad esempio riesci comunque a rendere visibile quello che l'ideatore del javascript malefico voleva nascondere.
Eventualmente perchè non un software che ingloba un browser (WebBrowser, Qt Webkit, wxWebConnect,...)?
Per quanto riguarda il tuo codice dovresti usare l'evento onload nel body e usare type="text/javascript" per farlo funzionare in firefox, poi però ti appare un avviso di sicurezza che la pagina sta facendo il redirect su un altro sito.
E questo non credo potresti risolverlo in ogni caso, perchè il tuo link punta ad un file locale che poi redirige su un sito esterno. Ti ci vuole qualcosa che avvii il browser direttamente sulla pagina di destinazione, poi però mi risulta difficile eliminare tutte le barre senza andare a modificare le impostazioni di default dei vari browser.
E credo che questo per un utente sarebbe abbanstanza noioso.
DanieleC88
23-07-2010, 19:15
Spiegami meglio l'idea dell'eseguibile cornice con la chiamata al motore di rendering....
Pensavo al fatto che, se non erro, Qt ha integrato il supporto a WebKit, e quindi, se la tua è più che altro un'applicazione web che però deve potersi avviare dal desktop di un utente, puoi fare un programmino che si limita a creare una finestra con dentro un'area di navigazione di WebKit. Visto che non è un web browser, non dovrai preoccuparti di nascondere barre di alcun tipo, e puoi farlo cross-platform senza troppi problemi.
Ovviamente questa soluzione ha dei difetti. Ad esempio, funziona solo se l'utente collabora: nessuno impedisce all'utente di aprire un browser con tutte le barre che vuole e poi collegarsi all'URL della tua applicazione web...
In tutta sincerità, c'è davvero il bisogno di nascondere tutti questi strumenti all'utente finale? Come giustamente fa notare anche tomminno, ogni buon browser ti permette di mostrarli di nuovo...
ciao ;)
Avete ragione entrambi :)
Googlo un pò cercando informazioni su Qt webkit per vedere se è facilmente compilabile e come posso creare un programmino che carichi un'area con webkit.
Ovviamente mentre googlo se qualcuno di voi ha già link o meglio ancora sà come utilizzarlo faccia un fischio :D
BeLakor
Ciao,
ho scaricato il pacchetto di wxWebConnect.
Ho creato la mia finestrella, il problema è che non riesco ad includere la finestra con browser. Mi sapete aiutare?
BeLakor
DanieleC88
26-07-2010, 13:39
Devi inserire un widget QWebView (http://doc.trolltech.com/4.4/qtwebkit.html) nella tua finestra.
Devi inserire un widget QWebView (http://doc.trolltech.com/4.4/qtwebkit.html) nella tua finestra.
Quello che mi interessa è una finestrella, solo con il titolo che prende dalla pagina contenuta (come per i normali browser), senza nessuna barra nè bottone (quindi nemmeno avanti, indietro, home, ecc..) che si colleghi in automatico all'indirizzo http://localhost:8080/OEMB/jsp/default.jsp e che sia abilitata all'esplosione dei pop-up.
DanieleC88 puoi aiutarmi? Non riesco nemmeno a compilare con il QWebView :muro:
BeLakor
DanieleC88
26-07-2010, 16:39
Guarda, è così semplice che non so nemmeno cosa dirti oltre a quello che è scritto nella documentazione che ti ho linkato. :)
Tanto per divertimento ho appena creato un "Qt GUI Project" in Qt Creator: la finestra principale te la crea lui automaticamente, c'è l'editor grafico di finestre con tanto di QWebView nella lista dei widget sulla sinistra.
Basta impostare manualmente la proprietà "url" e poi hai più o meno finito.
ciao ;)
Guarda, è così semplice che non so nemmeno cosa dirti oltre a quello che è scritto nella documentazione che ti ho linkato. :)
Tanto per divertimento ho appena creato un "Qt GUI Project" in Qt Creator: la finestra principale te la crea lui automaticamente, c'è l'editor grafico di finestre con tanto di QWebView nella lista dei widget sulla sinistra.
Basta impostare manualmente la proprietà "url" e poi hai più o meno finito.
ciao ;)
Allora, il QWebWiew non era integrato nella mia versione...
Ad ogni modo in questo momento, non riesco nemmeno a compilare:
Could not find make command: make in the build environment
Error while building project OEMBWin (target: Desktop)
When executing build step 'Make'
tomminno
26-07-2010, 18:59
Cosa hai scaricato?
E soprattutto per quale sistema operativo stai compilando?
Cosa hai scaricato?
E soprattutto per quale sistema operativo stai compilando?
Stò lavorando su Win 7. Devo compilare per Win.
Ho scaricato QT Creator 2.0.0 e QT-Win 4.6.2.
EDIT: dimenticavo MinGW 5.1.6 che però mi ha dato warning nel momento in cui ho installato QT-Win 4.6.2. Mi è uscito messaggio "se continui l'installazione potrebbero esserci problemi"
DanieleC88
26-07-2010, 20:14
Il fatto che non trova make mi fa pensare che qualcosa (forse l'installazione di Qt?) ti ha scombussolato la variabile d'ambiente PATH... Prova a settarla correttamente, altrimenti non compilerai mai. :)
No....non ci siamo...
Disinstallo tutto e reinstallo.
Non ho inserito nessun variabile d'ambiente che riguardi QT.
Per favore, mi indicate gentilmente cosa e quale versione devo scaricare e se devo seguire un procedimento preciso per l'installazione?
Non è possibile perdere tutto questo tempo per una cavolata simile però :mad:
Sono un programmatore web per chi non l'avesse capito e vi assicuro che non ho mai avuto problemi nel configurare l'ambiente di lavoro :D
tomminno
26-07-2010, 22:35
Stò lavorando su Win 7. Devo compilare per Win.
Ho scaricato QT Creator 2.0.0 e QT-Win 4.6.2.
EDIT: dimenticavo MinGW 5.1.6 che però mi ha dato warning nel momento in cui ho installato QT-Win 4.6.2. Mi è uscito messaggio "se continui l'installazione potrebbero esserci problemi"
Hai scaricato l'sdk disponibile all'indirizzo: http://qt.nokia.com/downloads/sdk-windows-cpp ?
Dentro c'è tutto quello che serve.
tomminno
26-07-2010, 22:37
Sono un programmatore web per chi non l'avesse capito e vi assicuro che non ho mai avuto problemi nel configurare l'ambiente di lavoro :D
Non ho idea di cosa tu abbia fatto, ma con l'SDK scarichi, installi e usi QtCreator, non hai bisogno di altro. MinGW è già incluso.
Non ho idea di cosa tu abbia fatto, ma con l'SDK scarichi, installi e usi QtCreator, non hai bisogno di altro. MinGW è già incluso.
Eccezionale! Ora ci siamo :)
Primo errorino:
release/mainwindow.o:mainwindow.cpp:(.text$_ZN13Ui_MainWindow7setupUiEP11QMainWindow[Ui_MainWindow::setupUi(QMainWindow*)]+0x13e): undefined reference to `_imp___ZN8QWebViewC1EP7QWidget'
release/mainwindow.o:mainwindow.cpp:(.text$_ZN13Ui_MainWindow7setupUiEP11QMainWindow[Ui_MainWindow::setupUi(QMainWindow*)]+0x1f2): undefined reference to `_imp___ZN8QWebView6setUrlERK4QUrl'
collect2: ld returned 1 exit status
BeLakor
DanieleC88
27-07-2010, 00:17
Nel creare il progetto hai abilitato anche il modulo QtWebKit? Senza di quello non riuscirai mai a compilare. :)
Se il progetto l'hai creato da Qt Creator, dovresti avere un file di nome "NomeProgetto.pro": aprilo e controlla che ci sia una riga del tipo "QT += webkit". Se non c'è, aggiungila e poi prova a riaprire il progetto e ricompilare.
Nel creare il progetto hai abilitato anche il modulo QtWebKit? Senza di quello non riuscirai mai a compilare. :)
Se il progetto l'hai creato da Qt Creator, dovresti avere un file di nome "NomeProgetto.pro": aprilo e controlla che ci sia una riga del tipo "QT += webkit". Se non c'è, aggiungila e poi prova a riaprire il progetto e ricompilare.
Corretto, mancava proprio l'aggiunta del modulo in QT ;)
Ok dai...inizio a capirci qualcosa :D
Adesso ho buildato e in run mi dà errore su qualsiasi cosa...sembra non riesca a caricarsi i file .js che vengono chiamati dalle mie servlet e jsp...
BeLakor
DanieleC88
27-07-2010, 10:25
Mi sembra strano... proprio ieri per verificare il funzionamento del progetto di prova l'ho testato su uno dei giochi che in firma (in JavaScript :D), quindi il problema non penso proprio possa essere JavaScript. Che errore ti dà?
L'errore js era semplicemente perchè era caduto il Tomcat :D
Seri problemi nella visualizzazione....oltre al fatto che è tutto lentissimo....
La premessa ovviamente è che aprendo il mio programma con IE - FF - Chrome non ho nessun problema :(
Visto che ci sono, dove si imposta il ridimensionamento della finestra e di QWebView a tutto schermo?
Vorrei inoltre che il ridimensionamento manuale della finestra, fosse seguito anche dal ridimensionamento del QWebView. Come posso fare?
BeLakor
DanieleC88
27-07-2010, 11:39
Seri problemi nella visualizzazione....oltre al fatto che è tutto lentissimo....
È WebKit: non dico che deve avere lo stesso rendering e le stesse identiche prestazioni di Chrome, ma quasi...
Visto che ci sono, dove si imposta il ridimensionamento della finestra e di QWebView a tutto schermo?
Eh?
Vorrei inoltre che il ridimensionamento manuale della finestra, fosse seguito anche dal ridimensionamento del QWebView. Come posso fare?
Se non ho capito male le tue necessità, hai solo:
una MainWindow
un centralWidget
un QWebView
In questo caso, clicca sul centralWidget nell'elenco dei componenti GUI sulla destra (sopra alle proprietà del widget selezionato), e poi clicca il pulsantino "Lay Out Horizontally" in alto. Salva e ricompila.
ciao ;)
Domanda: non è possibile integrare Gecko al posto di WebKit?
Nessun check Layout Horizontally nè in centralWidget nè in webView, c'è un layout direction con un combo, ma anche nel combo non c'è il valore da te specificato.
Visto che ci sono, dove si imposta il ridimensionamento della finestra e di QWebView a tutto schermo?
Intendevo dire...il programmino si apre con le dimensioni specificate, come faccio all'avvio a farlo aprire in automatico in modo che prenda la maxHeight e maxWidth?
Altra domanda: non riesco a trovare dove e se è possibile abilitare l'apertura di finestre pop-up.
BeLakor
tomminno
27-07-2010, 12:56
Domanda: non è possibile integrare Gecko al posto di WebKit?
Buon divertimento:
http://www.mozilla.org/projects/embedding/
Integrare Gecko è un vero macello.
Intendevo dire...il programmino si apre con le dimensioni specificate, come faccio all'avvio a farlo aprire in automatico in modo che prenda la maxHeight e maxWidth?
Cioè vuoi farlo apparire a schermo intero?
C'è il metodo showFullScreen
No, niente fullscreen.
La finestra deve semplicemente aprirsi come accade dopo aver cliccato sull'icona di win "Ingrandisci" (quella a fianco della X - Chiudi e del _ - Riduci a icona per intenderci).
tomminno
27-07-2010, 13:37
No, niente fullscreen.
La finestra deve semplicemente aprirsi come accade dopo aver cliccato sull'icona di win "Ingrandisci" (quella a fianco della X - Chiudi e del _ - Riduci a icona per intenderci).
E non è il fullscreen quello? :confused:
Assolutamente no...il fullscreen è proprio fullscreen....quindi, per capirci...niente barre, nè la main del programma, nè la barra inferiore di window :)
In Javascript equivale a screen.availHeight, screen.availWidth.
DanieleC88
27-07-2010, 13:50
Domanda: non è possibile integrare Gecko al posto di WebKit?
Possibile è possibile, fattibile è tutt'altro discorso. Se per te sta diventando problematico con il QWebView, ci sarà da divertirsi con Gecko. :Prrr:
Nessun check Layout Horizontally nè in centralWidget nè in webView, c'è un layout direction con un combo, ma anche nel combo non c'è il valore da te specificato.
Controlla bene, l'ho fatto di persona prima di scrivertelo. :p
Intendevo dire...il programmino si apre con le dimensioni specificate, come faccio all'avvio a farlo aprire in automatico in modo che prenda la maxHeight e maxWidth?
Quello che vuoi è una finestra massimizzata... aggiungi un "setWindowState(Qt::WindowMaximized);" al codice del costruttore della MainWindow.
Possibile è possibile, fattibile è tutt'altro discorso. Se per te sta diventando problematico con il QWebView, ci sarà da divertirsi con Gecko. :Prrr:
Controlla bene, l'ho fatto di persona prima di scrivertelo. :p
Quello che vuoi è una finestra massimizzata... aggiungi un "setWindowState(Qt::WindowMaximized);" al codice del costruttore della MainWindow.
1) Nel centralWidget e nel webView l'unica proprietà layout che ho è layoutDirection (ho cercato con il filtro) che ha il combo con 3 valori:
- LeftToRight
- RightToLeft
- LayoutDirection
Puoi dirmi dove l'hai trovato?
2) Finestra massimizzata correttamente, 1000 grazie :)
Perdonatemi comunque...mi metto nei vostri panni e sinceramente...quando i miei colleghi fanno le stesse domande idiote su Java o JS li prendo per scemi...
Ora capisco cosa vuol dire :D
BeLakor
DanieleC88
27-07-2010, 15:03
1) Nel centralWidget e nel webView l'unica proprietà layout che ho è layoutDirection (ho cercato con il filtro) che ha il combo con 3 valori:
- LeftToRight
- RightToLeft
- LayoutDirection
Puoi dirmi dove l'hai trovato?
No no aspe', non parlavo di proprietà: è un comando dell'editor di interfacce (sopra l'area di anteprima ci sono dei pulsantini, è uno di quelli ;)).
Aaaah...ma aspetta...quei tastini mi centrano in orizzontale ed in verticale il mio centralWidget che contiene il webView.
Io chiedevo:
Vorrei inoltre che il ridimensionamento manuale della finestra, fosse seguito anche dal ridimensionamento del QWebView. Come posso fare?
Cioè....il programma è in esecuzione....ingrandisco la finestra, vorrei si ingrandisse allo stesso modo anche il webView che attualmente invece rimane fisso con le dimensioni "da disegno".
BeLakor
DanieleC88
27-07-2010, 18:09
Il layout gestisce anche le sue dimensioni: se li metti in "griglia" e di widget ne hai solo uno, allora il suo ridimensionamento segue quello della finestra. L'hai provato? Funziona proprio come vorresti tu. :)
Il layout gestisce anche le sue dimensioni: se li metti in "griglia" e di widget ne hai solo uno, allora il suo ridimensionamento segue quello della finestra. L'hai provato? Funziona proprio come vorresti tu. :)
Riparto con il progetto tra una settimana, attualmente stò seguendo un altro lavoro e ho bloccato tutto.
BeLakor
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.