Archive for the ‘ Website ’ Category

[JavaScript]模拟 jQuery 的 CSS 选择器 (Selector)

2017/03/21 更新:

可能是之前为了要相容旧版 IE (v9.0 之前) 的缘故,所以没发现到 JavaScript 还有 querySelector()querySelectorAll() 这两个函式,它们的功能分别为:

范例中可以得知,这两个函式遵循 CSS 语法,可以实现复杂的 CSS 选择器的层级、属性、分组、串联、伪元素...等判断,功能已不是 getElementById()getElementsByClassName()getElementsByTagName() 可以比拟!

当然复杂的 CSS 层级可改由 querySelector() 或 querySelectorAll() 来取得元素,不过若是目标明确,考量效率我还是用 getElementById() 来处理可能会比较好。

自订函式 $$() 改写如下:

function $$(element, isFirst){
    if(isFirst === 1){
        // 强制回传第一笔符合的元素
        return(document.querySelector(element));
    }
    else if(/^\#[\w\-]+/.test(element)){
        // 以 $$("#id") 回传元素
        return(document.getElementById(element.slice(1)));
    }
    else{
        // 回传元素阵列
        return(document.querySelectorAll(element));
    }
}

($$() 增加了第二个参数: isFirst,若设为 1 则强制回传第一笔符合 CSS 选择器的元素,而非元素阵列)

之前的内容:

自订函式

JQuery 强大、方便的选择器 (Selector) 是 jQuery 不可或缺的功能之一。不过如果我们不想加载 jQuery 而只想使用类似 jQuery 选择器的功能,那可以用自订函式的方式做到:

function $$(element){
    switch(element.charAt(0)){
    case("#"):
        // 以 $$("#id") 回传元素
        return(document.getElementById(element.slice(1)));
    case("."):
        // 以 $$(".class") 回传元素阵列,IE 要 v9.0 之后才支援
        return(document.getElementsByClassName(element.slice(1)));
    default:
        // 以 $$("tag") 回传元素阵列
        return(document.getElementsByTagName(element));
    }
}

或是单纯一点,仅传回指定 id 的元素就好:

function $$(element){
    return(document.getElementById(element));
}

我把这个自订的函式命名为 $$(),用以与 jQuery 的工厂函式 $() 做区隔。

但是要注意,以上自订函式回传的都是 DOM 元素,与 jQuery 在其它操作上并不相同。

换掉 jQuery 的工厂函式

如有需要也可以用 jQuery.noConflict() 换掉 jQuery 的工厂函式 $(),ex:

var jq = jQuery.noConflict();

这样就能改用 jq() 来做为 jQuery 操作,而原本的 $() 只要再次重新定义为自订函式即可使用,不会与 jQuery 冲突。

帮大家试过用 ¥ 做为自订函式的名称,不过都失败,大家可以不用试了!

参考网页

[jQuery]《网页设计-爱上jQuery》读书心得及评论

使用 JavaScrip 的程式库来开发网页的程式可以加快开发的速度,其中 jQuery 也是颇受欢迎的一员。

不过目前可以买得到的 jQuery 中文书籍实在寥寥可数,以下是最近阅读《网页设计-爱上jQuery》这本书的心得及评论 (作者是罗子洋)。 Read more

使用 .htaccess 自订“404 找不到网页”的页面

一般我们租用的虚拟主机无法让我们修改 httpd.conf,所以只能透过使用 .htaccess 来自订“404 找不到网页”的页面。

Read more

[PHP]让 FCKeditor 浏览图档时,可以显示缩图

FCKeditor 虽然有提供很多种程式语言的档案浏览程式,让你可以很方便地上传及插入远端服务器上的图档,但在浏览档案的同时,我们最需要用到的图档却不能显示缩图,感觉很不方便 (应该是故意留了一手)。

虽然官方网站上有建议使用 CKFinder 这支外挂程式来管理服务器上的档案,但 CKFinder 却不是免费的。

思考了一下,虽然我的 PHP 很烂,但只是要做个缩图的功能应该还难不倒我,于是就花了几个小时把缩图的功能实做出来。原理很简单,只是先在相同目录下产生 ".thumb.gif" 的缩图档,在列示时将缩图显示出来。

Read more

CSS 及网页设计的相关网页

网页设计

Read more

[JavaScript]动态网页设计的相关网页 (dhtml)

国外网站

中文网站

其它

正规表示式 (Regular Expression) 语法整理

正规表示式 (Regular Expression, 简写 regex、regexp 或 RE) 是用于字串比对的小型语言,又称正则表达式、正规表示法、规则运算式、常规表示法 (Wiki)。

很多程式语言和软件都会附加“正规表示式”这项功能。在字串的处理上,针对大量、重复、有固定逻辑的文字,正规表示式是非常强而有力的工具! 即便不是程式设计师,在可以在运用到正规表示式的场合 (例如: 文字编辑器),能帮你节省许多文字处理的时间。但是不同的软件所附加的正规表示式可能略有差异,这部份就要稍加留意。

不过在初学者的眼中,正规表示式却又像是天书一样的难以理解。以下文章针对正规表示式的相关语法做解说,你可到线上测试工具,以实际的例子去做测试。

Read more

[JavaScript]让网页的“外部超连结”自动开启在新视窗

在编辑网页时,如果要让某个超连结 (Link) 开启在新的浏览器视窗,我们可以在超连结加上“href="_blank"”属性,但如果超连结很多,要一个一个加上去毕竟麻烦!!

以下的程式码可以帮你把网页内所有针对“外部”的超连结自动设为在新视窗开启。

一般网页

  1. 将下列程式码加到网页的 <head> 区段:
    <script type="text/javascript">
    function parseLink(){
      var tagA = document.getElementsByTagName( "a" );
      re = new RegExp( "^(http://" + document.domain + ")|(javascript:)", "i" );
      for( var i=0; i < tagA.length; i++ ){
        if( !tagA[i].href.match( re ) ){ tagA[i].target = "_blank"; }
      }
    }
    </script>
  2. 在 <body> 标签内的 onload 事件加入:
    parseLink();

    Ex:

    <body onload="parseLink();">

WordPress 外挂程式

如果你的网站是用 WordPress 架设,可直接在控制台搜寻并安装“Open external links in a new window”这个外挂程式 (版本: 1.3.1 作者: Kristian Risager Larsen),这样就不用添加任何程式码了。

另外需注意,如果本外挂程式与其它像 LightBox、FancyBox...之类的图片灯箱特效的程式一起使用,有可能会造成同时显示灯箱特效,又同时将图片开启于新视窗!!

[JavaScript]一些好用的 JavaScript 的网址列指令

以下这些 JavaScript 指令,只要打在浏览器的网址列即可:

  • 变更视窗大小:
    javascript:window.resizeTo(800,600)
  • 检视 Cookies:
    javascript:alert("Cookie:"+document.cookie)
  • 打印网页:
    javascript:print()
  • 几种网页转址与“301 永久搬移”的语法

    转址的方式分为:

    • 302: 暂时搬移 (Temporarily Moved)
    • 301: 永久搬移 (Permanently Moved)

    Read more

    return top