使用jQuery UI小部件时如何发现所有可用属性?

时间:2016-10-20 18:29:48

标签: javascript jquery jquery-ui jquery-ui-button undocumented-behavior

我最近发现某些jQuery UI小部件有其他属性可以使用,但没有记录。例如,在jQuery UI 1.11.4对话框中提供buttons属性时,我可以使用idautofocus等子属性,$("#myDialog").dialog({ title: "Do the thing?" buttons: [ { text: "Yes", id: "dialogBtnYes", click: function () { $(this).dialog("close") } }, { text: "No thanks", id: "dialogBtnNo", autofocus: true, click: function () { $(this).dialog("close") } } ] }); requests中都没有列出Selenium#open Tor browser os.system('open /Applications/TorBrowser.app') #code to scrape #close Tor browser ??? 3}}

import subprocess
subprocess.Popen('/Applications/TorBrowser.app') #permission denied

我想知道还有多少其他未记录的选项供我使用。我试过梳理JavaScript文件,但对于像我这样的JavaScript新手来说这是非常艰巨的。

通过源代码梳理你们想要找出其他“隐藏”功能的内容,或者这是不可行的?如果是这样的话,在太阳成为红巨人之前,有什么建议可以告诉我如何实现这个目标吗?如果没有,您可以推荐哪些其他方法来学习jQuery UI(或任何JavaScript框架)必须提供的内容?

1 个答案:

答案 0 :(得分:1)

使用递归函数枚举库的所有方法和属性。例如:



function getUDFs()
    {
    var current;

     /* Use a local variable named current instead of a global variable */

    for(current in arguments[0])
      {
      getUDFs.id = arguments[1]  + " => ";

      /* If the property is not null or undefined */
      if (!!arguments[0][current] || arguments[0][current] === "")
        {
        /* If the constructor is a standard JavaScript type */
        if (/Function|String|Object/.test(String(arguments[0][current].constructor) ) )
          {
          /* Store in an array */
          if (getUDFs.hasOwnProperty("data") )
            {
            getUDFs.data.push(getUDFs.id + current)
            }
          else
            {
            getUDFs.data = []
            }
          }

        if (/Object|Function/.test(String(arguments[0][current].constructor) ) )
         {
         getUDFs(arguments[0][current], getUDFs.id + current)
         }
        }
      }  
     }

getUDFs($.ui,"jQueryUI");
console.log(getUDFs.data);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
&#13;
&#13;
&#13;

一旦jQuery UI对象成为DOM元素,就会添加idmousemove属性。例如:

&#13;
&#13;
function getUDFs()
    {
    var current;

    for(current in arguments[0])
      {
      getUDFs.id = arguments[1]  + " => ";

      if (!!arguments[0][current] || arguments[0][current] === "")
        {
        if (/Function|String|Object/.test(String(arguments[0][current].constructor) ) )
          {
          if (getUDFs.hasOwnProperty("data") )
            {
            getUDFs.data.push(getUDFs.id + current)
            }
          else
            {
            getUDFs.data = []
            }
          }

        if (/Object|Function/.test(String(arguments[0][current].constructor) ) )
         {
         getUDFs(arguments[0][current], getUDFs.id + current)
         }
        }
      }  
     }

getUDFs(document.body,"document.body");
console.log(getUDFs.data);
&#13;
&#13;
&#13;

<强>参考