一些关于DiscuzX自己js框架的小笔记

    1. 内置的ID选择器
      可以使用$('id'),只能简单代替document.getElementById('id'),木有jQuery的$那么全能,所以你在DiscuzX里面如果一定jQuery的话,记得加上jQuery.noConflict() / $.noConflict();,或者用个别名也可以,比如
      var j = jQuery.noConflict();,
      如果一定是喜欢使用jQuery的$,或者想以后代码可以被无痛拷贝到其他没有$冲突的环境,可以这样做
      Reverts the $ alias and then creates and executes a function to provide the $ as a jQuery alias inside the functions scope. Inside the function the original $ object is not available. This works well for most plugins that don't rely on any other library.[javascript]jQuery.noConflict();
      (function($) {
      $(function() {
      // more code using $ as alias to jQuery
      });
      })(jQuery);
      // other code using $ as an alias to the other library[/javascript]
    2. 内置的事件监听器的简单包装
      我们知道由于addEventListener(firefox,顺序执行)和attachEvent(IE,逆序执行)的存在,discuz对这个东西做了一段简单的包装。统一使用_attachEvent来添加。当然也包装了对应的_detachEvent。
      [javascript]function _attachEvent(obj, evt, func, eventobj) {
      eventobj = !eventobj ? obj : eventobj;
      if(obj.addEventListener) {
      obj.addEventListener(evt, func, false);
      } else if(eventobj.attachEvent) {
      obj.attachEvent('on' + evt, func);
      }
      }

      function _detachEvent(obj, evt, func, eventobj) {
      eventobj = !eventobj ? obj : eventobj;
      if(obj.removeEventListener) {
      obj.removeEventListener(evt, func, false);
      } else if(eventobj.detachEvent) {
      obj.detachEvent('on' + evt, func);
      }
      }
      [/javascript]

      比如下面的天气预报延迟加载代码,页面onload完成后,再过3s,加载江阴的天气信息。这个一看就明白了,不多说
      [html]<!--异步载入天气 Start by ihipop @ 2012/3/27 20:46-->
      <span id="_w_loading" style="display: inline; float: right; margin-right: 5px; color: #c4312a;">天气信息载入中...:)</span>
      <div style="display: inline; float: right; margin-top: 7px; background-color: transparent;"><iframe id="_w_content" style="display: none;" src="" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="160" height="20"></iframe></div>

      <script type="text/javascript">// <![CDATA[
      _attachEvent(window, 'load', function(){
      setTimeout(function(){
      var _w_src='http://m.weather.com.cn/m/pn4/weather.htm?id=101190202T';
      $('_w_loading').style.display='none';
      $('_w_content').style.display='inline';
      $('_w_content').src=_w_src;
      },3000);}, document);
      // ]]></script>
      <!--异步载入天气 Stop by ihipop @ 2012/3/27 20:46-->[/html]

    3. 浏览器识别

开发者可以使用

if (BROWSER.firefox){
}

这样的逻辑来判断使用的什么浏览器及其版本。BROWSER.firefox返回的直接就是浏览器的版本号。如果在firefox里面alert(BROWSER.chrome),得到的是0,也就是不是firefox浏览器

Author Info :
  • From:一些关于DiscuzX自己js框架的小笔记
  • URL:https://blog.ihipop.com/2012/04/3116.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注