代码之家  ›  专栏  ›  技术社区  ›  n8wrl

隐藏控件的加载时初始化

  •  3
  • n8wrl  · 技术社区  · 14 年前

    所以,我一直在尝试分解.css和.js并编写控件来注册所需的.js和.css。最初我会得到更多但更小的.js和.css文件,但我可以在以后的运行时合并它们。我只想封装这些控件,这样使用它们的页面就不太了解使用它们需要什么了。

    我是否必须咬紧牙关,在我使用这些控件的页面上手动添加正确的.css/.js,或者是否有更好的方法来“清点”正在使用的控件,让它们发出所需的信息?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community chadoh    7 年前

    我假设您所面临的问题是某些控件是动态加载的(即在更新面板中)。这是一个棘手的问题-通常是因为你不知道事先控制你将需要什么,从而JS+CSS包括。

    也许您应该考虑使用脚本加载器动态加载JS和CSS?
    YUI脚本加载器和新的msone让我想起了(但我确信还有很多其他同样优秀的软件)。

    this 前面的几个可能有用的链接的答案。另请参见 here 有关MS脚本加载程序和 YUI scriptloader

    既然你已经在使用MS-stuff了,我建议你使用MS-script-loader ,MS脚本加载程序不支持管理动态加载的CSS( 如果有人知道不同的,请纠正我 )因此,也许YUI解决方案可能更合适(或者,如果还没有添加CSS,您可以使用自己的方式动态添加CSS,这应该不会太难)。

    例如,如果您当前有这样的用户控件标记

      <div id="my control">
        <script type="text/javascript>
          foo(); // foo is defined in foo.js, which is included in a script element in the head
          ... more script ...
        </script>
        ....
      </div>
    

    然后使用一个脚本加载器,你必须改变它看起来像这样

      <div id="my control">
    
        <script type="text/javascript>
          var onLoadHandler = function() {
            foo();
            ... more script ...
          };
          Sys.loader.registerScript("foo_package_name", null, onLoadHandler); 
        </script>
      </div>
    
        2
  •  1
  •   mwgriffith    14 年前

    您可以将js和css文件包含在正在使用的控件的呈现中。基本上是将它们添加到控件生成的html的第一行中。我知道你应该可以在html的任何地方加入js文件的include,尽管我还没有尝试过css文件。

    我很想看看你在做什么,因为我一直在做一些类似的事情,我目前的工作。