@ -27,11 +27,11 @@ var messagingConnector = function(response) {
if ( response . requestId ) {
if ( response . requestId ) {
listener = vAPI . messaging . listeners [ response . requestId ] ;
listener = vAPI . messaging . listeners [ response . requestId ] ;
}
if ( ! listener ) {
if ( ! listener ) {
channel = vAPI . messaging . channels [ response . portName ] ;
channel = vAPI . messaging . channels [ response . portName ] ;
listener = channel && channel . listener ;
listener = channel && channel . listener ;
}
}
}
if ( typeof listener === 'function' ) {
if ( typeof listener === 'function' ) {
@ -230,7 +230,6 @@ if (window.chrome) {
// relevant?
// relevant?
// https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW12
// https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW12
vAPI . messaging = {
vAPI . messaging = {
port : null ,
requestId : 0 ,
requestId : 0 ,
listeners : { } ,
listeners : { } ,
channels : { } ,
channels : { } ,
@ -240,10 +239,19 @@ if (window.chrome) {
vAPI . messaging . connector ( msg . message ) ;
vAPI . messaging . connector ( msg . message ) ;
} ;
} ;
safari . self . addEventListener ( 'message' , this . _connector , false ) ;
safari . self . addEventListener ( 'message' , this . _connector , false ) ;
this . channels [ 'vAPI' ] = {
listener : function ( msg ) {
if ( msg . cmd === 'runScript' && msg . details . code ) {
Function ( msg . details . code ) . call ( window ) ;
}
}
} ;
} ,
} ,
close : function ( ) {
close : function ( ) {
if ( this . _connector ) {
if ( this . _connector ) {
safari . self . removeEventListener ( 'message' , this . _connector , false ) ;
safari . self . removeEventListener ( 'message' , this . _connector , false ) ;
this . channels = this . listeners = null ;
}
}
} ,
} ,
channel : function ( name , callback ) {
channel : function ( name , callback ) {