2011-02-11 35 views

回答

0

據據我所知,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影響,因爲它在它自己的窗口中。

3

閱讀: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> 
+0

它實際上是綜合了一些東西。稍後我會發布答案。 – Peter 2011-02-11 19:03:42

+0

有沒有代碼工作? – Charlie 2011-11-08 17:37:30

0

我覺得在Safari下它叫popover,那是什麼意思?

兩件事情,我注意到:

  1. 如果沒有命令集(工具欄上的項目),將酥料餅單擊工具欄按鈕
  2. 時,如果有一個命令集,則自動顯示用戶需要點擊並按保持按下工具欄按鈕,直到彈出顯示。