/ / Safari Extension, abre la URL en una nueva pestaña desde la ventana emergente - safari-extension

Extensión de Safari, abra la url en una nueva pestaña desde la ventana emergente - safari-extension

Mi extensión abre una ventana emergente desde globalpage.html

safari.application.openBrowserWindow()

Me gustaría abrir alguna url de la ventana emergente en la nueva pestaña de la ventana principal. No tengo acceso a

safari.extension.globalPage

o

safari.application.xxxxx

Respuestas

4 para la respuesta № 1

Desde su secuencia de comandos inyectada, debe enviar un mensaje a la página global que le indique que abra una nueva pestaña.

En el guión inyectado:

safari.self.tab.dispatchMessage("openUrlInNewTab", "http://www.example.com/");

// the message name "openUrlInNewTab" is arbitrary

En el guión de la página global:

function handleMessage(msgEvent) {
if (msgEvent.name == "openUrlInNewTab") {
safari.application.activeBrowserWindow.openTab().url = msgEvent.message;
}
}

safari.application.addEventListener("message", handleMessage, false);

(Aquí está la sección relevante de la guía de desarrollo de la extensión Safari).

Sin embargo, si desea abrir la nueva pestaña enotra ventana que no sea la delantera, que en su caso probablemente será su ventana emergente, necesita identificar la otra ventana de alguna manera. Por ejemplo, justo antes de abrir la ventana emergente, puede copiar la ventana activa a una variable, como esta:

var targetWin = safari.application.activeBrowserWindow;

Luego, cuando desee abrir una nueva pestaña, use:

targetWin.openTab().url = msgEvent.message;

1 para la respuesta № 2

Esto funcionó para mí. Está vinculado a un elemento de la barra de herramientas con el comando "myCommand". No necesitaba agregar un script de inyección, y solo lo coloqué en mi archivo global.html.

Hay una desactivación si no hay una URL cargada en la pestaña, pero la desactivé elogiando la línea que comienza en "event.target.disabled ..."

<script type="text/javascript" charset="utf-8">
function performCommand(event)
{
if (event.command === "myCommand") {
safari.application.activeBrowserWindow.openTab().url = "http://www.yourdomain.com/";
}
}
function validateCommand(event)
{
if (event.command === "myCommand") {
// Disable the button if there is no URL loaded in the tab.
// event.target.disabled = !event.target.browserWindow.activeTab.url;
}
}

// if event handlers are in the global HTML page,
// register with application:
safari.application.addEventListener("command", performCommand, true);
safari.application.addEventListener("validate", validateCommand, true);
</script>