En Windows, cuando el control ActiveX "Shell.Explorer" está incrustado en una aplicación, es posible registrar un manejador "externo" - en el objeto que implementa IDispatch, de modo que los scripts en la página web puedan llamar a la aplicación de alojamiento .Webkit incorporado - devoluciones de guiones ¿cómo?
<button onclick="window.external.Test('called from script code')">test</button>
Ahora, he trasladaron al desarrollo Mac y pensé que podría conseguir algo de trabajo similar de WebKit incrustado en la aplicación Cocoa. Pero, realmente no parece haber ninguna posibilidad de permitir que los scripts vuelvan a llamar a la aplicación de alojamiento.
Un consejo fue conectar window.alert
y obtener secuencias de comandos para pasar una cadena de mensaje formateado como la cadena de alerta. También me pregunto si WebKit quizás pueda dirigirse a un plugin NPAPI alojado en una aplicación usando NPPVpluginScriptableNPObject.
¿Echo de menos algo? ¿De verdad es tan difícil alojar un WebView y permitir que los scripts interactúen con el host?
Hace [webView mainFrame] loadData: desencadena el didClearWindowObject:? Tengo el [webView setFrameLoadDelegate: self]; setup pero esto no está configurando el windowScriptObject cuando intento un punto de interrupción. – Luke
Lo tengo funcionando de esta manera, pero ¿cómo se llama a un controlador (función JS) de Cocoa, como una devolución de llamada que algo sucedió en Cocoa. Por supuesto, puede obtener el 'windowScriptObject' de' WebView' pero ¿hay alguna manera para que 'Cocoa' sepa a qué instancia de' WebScriptObject' pertenece? –
Excelente. ¡Gracias! ;-) –