2011-08-22 47 views
1

觸發器在FF文本框按鍵計數器定製警告這是我的警報功能可以顯示警報消息:使用Javascript XUL

function alertPopup() { 
    var image = "file://C:/stat.png"; 
    var win = Components.classes['@mozilla.org/embedcomp/window-watcher;1']. 
         getService(Components.interfaces.nsIWindowWatcher). 
         openWindow(null, 'chrome://global/content/alerts/alert.xul', 
            '_blank', 'chrome,titlebar=no,popup=yes', null); 
    win.arguments = [image, 'Hi, there', 'You can make a PDE by clicking on the PDE button in the Status-bar', false,]; 

document.getElementById('myImage').setAttribute("hidden", "false"); 

} 

這個函式,以獲得在Firefox瀏覽器和粘貼輸入的文本在文本框插件中。

onKeypress : function (e) { 
      var node = e.target; 
      var nodeName = node.nodeName.toLowerCase(); 
      //text area cache onKeyPress code 
      if (nodeName == "textarea" && node.value == "" && e.keyCode == 13) { 
      pde.fillText(node); 
      return; 
      } 
      // this node is a WYSIWYG editor or an editable node? 
      if ((nodeName != "html" || node.ownerDocument.designMode != "on") && node.contentEditable != "true") 
      return; 

      if (node.textContent == "" && e.keyCode == 13) { 
      pde.fillText(node); 
      return; 
      } 

      if (!node.tacacheOnSave) { 
      pde.fillText(node); 
      } 

     }, 
     onChange : function (e) { 
      var node = e.target; 
      var nodeName = node.nodeName.toLowerCase(); 
      //alert("onChange : "+nodeName); 
      if (nodeName != "textarea") 
      return; 
      pde.fillText(node); 
     }, 
     onInput : function (e) { 
      var node = e.target; 
      var nodeName = node.nodeName.toLowerCase(); 
      //alert("onInput : "+nodeName); 
      // Only for textarea node 
      if (node.nodeName.toLowerCase() != "textarea") 
      return; 

      if (node.value == "") 
      return; 
      pde.fillText(node); 
     }, 
     fillText : function (node) { 
      nodeSRC = node; 
      if (node.nodeName.toLowerCase() == "textarea") { 
      userContent = node.value; 
      } 
      else if (node.nodeName.toLowerCase() == "html") { 
      userContent = node.ownerDocument.body.innerHTML; 
      } 
      else // element.contentEditable == true 
      userContent = node.innerHTML; 
     }, 
     emptyNodeSRC : function (node){ 
      if (node.nodeName.toLowerCase() == "textarea") { 
      node.value = ""; 
      } 
      else if (node.nodeName.toLowerCase() == "html") { 
      node.ownerDocument.body.innerHTML = ""; 
      } 
      else // element.contentEditable == true 
      node.innerHTML = ""; 
     }, 

maxTextEntered:20;我想將這個參數添加到我的上面的代碼。

如果用戶在我的代碼中的FF瀏覽器文本框中輸入了超過20個chaserstrs,並且我想重置5分鐘後的時間並重新開始計算,那麼我如何觸發彈出功能?

https://developer.mozilla.org/en/NsIAlertsService https://developer.mozilla.org/en/Code_snippets/Alerts_and_Notifications從這些鏈接中,我找不到任何腳本來滿足我的要求。

請對我很好的解決了我的問題。 謝謝你們。

回答

1

5天后,我有解決我的問題。

的實際代碼緩存userContent(即如果有的話,用戶鍵入的東西在FF瀏覽器文本框或文本區域時),一切都將被放入緩衝存儲器 &這將被保存,直到用戶關閉現有案文 - 區域或文本框。 如果用戶打開了一個新的文本框或一個新的文本區域&類型的東西,新userContent將被存儲在緩衝區memeory(舊緩衝區將被刪除)。

的想法是我的問題非常簡單(我不能深想在一開始):

功能onkeypress事件功能:

if ((nodeName != "html" || node.ownerDocument.designMode != "on") && node.contentEditable != "true") // this tells it's a html text-box area// 
       return; 

      if (node.textContent == "" && e.keyCode == 13) { 
       pdes.fillText(node); 
       return; 
      } 

這告訴瀏覽器來檢測用戶輸入內容並將其傳遞給fillText(節點)。這叫我的其他功能 fillText : function (node) to fill the values(texts)

要檢查userContent variabel的值長度觸發警報我如果用戶達到指定數值。

 else if (node.nodeName.toLowerCase() == "html") // his tells it's a html text-box area of any website in FF browser// 
       { 
      userContent = node.ownerDocument.body.innerHTML; 
       var myTest = userContent.length; 
       if(userContent.length == 20) 
       { 
       alertPopup(); //calling my custom alert function. 
       } 

function alertPopup() { 
    var image = "chrome://PDE/skin/build.png"; 
    var win = Components.classes['@mozilla.org/embedcomp/window-watcher;1']. 
         getService(Components.interfaces.nsIWindowWatcher). 
         openWindow(null, 'chrome://global/content/alerts/alert.xul', 
            '_blank', 'chrome,titlebar=no,popup=yes', null); 
    win.arguments = [image, 'Hi, there', 'You can make a PDE by clicking on the PDE button on the tool-bar', false]; 

//document.getElementById('myImage').setAttribute("hidden", "false"); 
} 

下面是完整的代碼:

onKeypress : function (e) { 


      var node = e.target; 
      var nodeName = node.nodeName.toLowerCase(); 
      //text area cache onKeyPress code 
      //alert('hi1'); 


      if (nodeName == "textarea" && node.value == "" && e.keyCode == 13) { 

       pde.fillText(node); 

       return; 
      } 


      // this node is a WYSIWYG editor or an editable node? 
      if ((nodeName != "html" || node.ownerDocument.designMode != "on") && node.contentEditable != "true") 
       return; 

      if (node.textContent == "" && e.keyCode == 13) { 
       pde.fillText(node); 
       return; 
      } 

      if (!node.tacacheOnSave) { 
       pde.fillText(node); 
      } 

     }, 


     fillText : function (node) { 
       // declare tmpNodeVal OUTSIDE the function 
      nodeSRC = node; 
      var tmpNodeVal = ""; 

      if (node.nodeName.toLowerCase() == "textarea") { 
       userContent = node.value; 

      } 

      else if (node.nodeName.toLowerCase() == "html") { 

      userContent = node.ownerDocument.body.innerHTML; 
      //alert(userContent); 
       var myTest = userContent.length; 
       if(userContent.length == 50) 
       { 
       alertPopup();//calling my custom alert function. 
       } 
       else if(userContent.length == 200) 
       { 
       PopupNotifications.show(gBrowser.selectedBrowser, "PDES-popup", 
     "Hi, there!, You have reached more than the max level !", 
     "pde-toolbar-button", /* anchor ID */ 
     { 
      label: "Build PDES", 
      accessKey: "D", 

      callback: function() { 
         if(nodeSRC!=null) pde.emptyNodeSRC(nodeSRC); 

      window.openDialog("chrome://hello/content/hellouilder.xul", "hello", "chrome,width=400,height=360",userContent, nodeSRC); 

      } 
     },null, { timeout:1000}); 
       } 

      } 
      else // element.contentEditable == true 
       userContent = node.innerHTML; 
     } 

注: 1. The above code covers the functionality of KeyPress counter and trigger an alert. With the above code, we can trigger an alert for the "Subject" area in Gmail or Yahoo websites during email writting process.