我正在尝试构建我的第一个 safari 扩展程序,但我对一些基本概念不知所措。
第一个障碍是从工具栏按钮打开一个弹出窗口,就像 Ebay Safari 扩展一样。
我正在尝试构建我的第一个 safari 扩展程序,但我对一些基本概念不知所措。
第一个障碍是从工具栏按钮打开一个弹出窗口,就像 Ebay Safari 扩展一样。
阅读: http: //net.tutsplus.com/tutorials/other/how-to-create-a-safari-extension-from-scratch/
它描述了按下工具栏按钮时如何发生某些事情,您只需将其放在中间:
<script>
// Set up the Listener
safari.application.addEventListener("command", performCommand, false);
// Function to perform when event is received
function performCommand(event) {
// Make sure event comes from the button
if (event.command == "open-nettuts") {
**YOUR FUNCTION**
}
}
</script>
据我所知,Safari 不允许我们像 Chrome 那样创建“弹出窗口”。对于我的 Safari 扩展,我使用 jQueryUI 创建弹出窗口。您还可以使用 YUI 或 Mootools。在拆开 eBay 和 Twitter 扩展时,我看到他们使用的是 iframe。我不知道他们是如何实现它的,因为 jquery 不允许您修改 iframe 的内容(如果我在这里错了,请纠正我)。
但是要回答您的问题,您的按钮将向注入的脚本发送一个事件。该脚本可以具有类似于以下的代码:
$('body').append('<div id="mypopup">');
var myPopup = $('#mypopup').dialog({
'autoOpen' : false ,
'draggable' : false,
'modal' : false,
'resizable' : false,
'title' : 'My Popup'
});
function messageHandler(msgEvent) {
var messageName = msgEvent.name;
var messageData = msgEvent.message;
if (messageName === 'buttonPushed') {
if (myPopup.dialog('isOpen')) {
myPopup.dialog('close');
return;
}
$('#mypopup').children().empty(); // Clear out any crap should it exist
$('#mypopup').append(someHTML);
myPopup.dialog('open');
return;
}
}
}
这是一个非常基本的例子。我的有一个工具栏,还有很多其他的东西。另外,你必须有真正特定的 CSS 规则来保护你的弹出窗口的 CSS 不被世界上每个站点破坏。
我也考虑过使用 global.html 打开“弹出”窗口,但据我所知,它所能做的就是打开一个窗口。我没有看到任何设置大小等属性的工具。如果有,我会走那条路,因为你的弹出窗口会受到 CSS 的保护,因为它在它自己的窗口中。
我认为在 Safari 下它被称为弹出框,这就是你的意思?
我注意到两件事: