当前位置:  编程技术>WEB前端
本页文章导读:
    ▪第一篇 channel和channelartlist标签详解      channel标签用来显示网站的频道,有多种用法,涉及到换行、分列等功能。网上的资料有限,下面我们就结合默认模板详细讲解一下这个标签的用法。 ¢channel|频道标签 标签名称:channel 标.........
    ▪JS模块与命名空间      起因将代码组织到类中的一个重要原因是让代码更加“模块化”,可以在很多不同的场景中实现代码的重用。但类不是唯一的模块化代码的方式。一般来讲,模块是一个独立的JS文件。.........
    ▪【JS跨域取XML】之——借助AS的URLLoader      最近接到一个功能拓展需求,新需求中所引用的数据接口却只能提供XML格式……无奈自身功力有限,没有想到JS方面理想的解决方案,只好寻求AS工程师的帮忙,经过近2天的联调,最终.........

[1]第一篇 channel和channelartlist标签详解
    来源:    发布时间: 2013-11-06

channel标签用来显示网站的频道,有多种用法,涉及到换行、分列等功能。网上的资料有限,下面我们就结合默认模板详细讲解一下这个标签的用法。 ¢channel|频道标签 标签名称:channel
标记简介:织梦常用标记,通常用于网站顶部以获取站点栏目信息,方便网站会员分类浏览整站信息
功能说明:用于获取栏目列表
适用范围:全局使用
基本语法:
{dede:channel type='top' row='8' current~typelink~' >~typename~</a> </li>"}
 <li><a href='/blog_article/[field_typelink/]/index.html'>[field:typename/]</a> </li>
{/dede:channel}
相关函数:
文件\include\taglib\channel.lib.php第2行
function lib_channel(&$ctag,&$refObj)
参数说明:
typeid = '0' 栏目ID    type = ‘son | sun’ son表示下级栏目,self表示同级栏目,top顶级栏目
reid = ‘0’ 上级栏目ID
row = ‘100’ 调用栏目数
col = ‘1’ 分多少列显示(默认为单列)
currentstyle = '' 应用样式
底层模板字段: ID(同 id),typeid, typelink, typename, typeurl,typedir(仅表示栏目的网址) 例: {dede:channel type='top'} <a href='/blog_article/[field_typelink /]/index.html'>[field:typename/]</a> {/dede:channel}
注:在没有指定typeid的情况下,type标记与模板的环境有关,如,模板生成到栏目一,那么type='son'就表示栏目一的所有子类   ¢频道的分列显示  除了在channel里面设置col属性外,还要在dedecms.css中添加对dl标签的格式控制。如下:  #navMenu dl{  width:500px;  margin-right:8px;  margin-top:2px; } 另外需要更改#navMenu的高度控制。 并且指定新的背景,如下: .blue .top {  background-image: url("/images/green_skin2.png");  background-position: 0 -108px;  background-repeat: repeat-x;  height: 100px; } .blue .top .t_l {  background-position: 0 72px;  background-repeat: no-repeat;  height: 70px;  width: 5px; } .blue .top .t_r {  background-position: -6px 72px;  background-repeat: no-repeat;  height: 70px;  width: 5px; } ¢type|指定栏目 ¢标签名称:type
功能说明:表示指定的单个栏目的链接
适用范围:全局使用
基本语法:
{dede:type}
< a href="[field:typelink /]">[field:typename /]</a>
{/dede:type}
相关函数:
文件\include\taglib\type.lib.php第5行
function lib_type(&$ctag,&$refObj)
参数说明:
typeid='' 指定栏目ID
底层模板字段:
typename,typelink(仅表示栏目的网址), 栏目表dede_arctype的所有字段
使用实例:
如果不指定typeid£¬默认为0,这时候获取栏目会根据栏目的环境变量改变而改变   ¢channelartlist|频道文档 ¢标签名称:channelartlist
标记简介:
功能说明:获取当前频道的下级栏目的内容列表标签
适用范围:全局使用
基本语法:
{dede:channelartlist row=6}
< dl>
 <dt><a href='/blog_article/{dede_field name=/index.html'typeurl'/}'>{dede:field name='typename'/}</a></dt>
 <dd>
 {dede:arclist titlelen='42' row='10'}    <ul >
     <li><a href="/blog_article/[field_arcurl /]/index.html">[field:title /]</a></li>
      <li>([field:pubdate function="MyDate('m-d',@me)"/])</li>
    </ul>
{/dede:arclist}
< /dl>
{/dede:channelartlist}
相关函数:
文件\include\taglib\channelartlist.lib.php第6行
function lib_channelartlist(&$ctag,&$refObj)
参数说明:
typeid = '0' 频道ID,多个请用","分隔 row = '20' 获取的栏目返回值 其他说明: 除了宏标记外,channelArtlist 是唯一一个可以直接嵌套其它标记的标记,不过仅限于嵌套 {dede:type}{/dede:type} 和 {dede:arclist}{/dede:arclist} 两个标记。
底层模板变量:
包含{dede:type}{/dede:type}及{dede:arclist}{/dede:arclist}下面所有底层模板变量。   ¢频道的分组显示    如果频道很多要在一页的不同位置以不同的格式显示,这时可以使用channelartlist和type的组合。  

<ul> 

{dede:channelartlist typeid='1,51,6,7,8,9' row=6}   

    <dl><dd>     

         {dede:type}

                <li><a href="/blog_article/[field_typeurl /]/index.html"><span>[field:typename /]</span></a></li>

    {/dede:type}   

    </dd></dl>   

{/dede:channelartlist}    

 </ul><br> 

 <ul>

{dede:channelartlist typeid='10,11,12,54,55,56,57' row=7}

         <dl> <dd>

         {dede:type}

                <li><a href="/blog_article/[field_typeurl /]/index.html"><span>[field:typename /]</span></a></li>

         {/dede:type}

         </dd></dl>

{/dede:channelartlist} 

</ul> 

本文链接


    
[2]JS模块与命名空间
    来源:    发布时间: 2013-11-06

起因

将代码组织到类中的一个重要原因是让代码更加“模块化”,可以在很多不同的场景中实现代码的重用。但类不是唯一的模块化代码的方式。

一般来讲,模块是一个独立的JS文件。模块文件可以包含一个类定义、一组相关类、一个实用函数库或者一些待执行的代码。

模块化的目标是支持大规模的程序开发,处理分散源中代码的组装,并且能让代码正确运行,哪怕包含了不需要的模块代码,也可以正确执行代码。

理想状态下,所有模块都不应当定义超过一个全局标识。

模块函数

通过把模块定义在某个函数的内部来实现,定义的变量和函数都属于该函数的局部变量,在函数外不可见。实际上,可以将这个函数作用域用做模块的命名空间(模块函数)

一旦将模块代码封装进一个函数中,就需要一些方法导出公用API,以便在模块函数外部调用它们。下面有几种方式导出公用API:

首先创建一个命名空间

// 创建一个全局变量用来存放与学校相关的模块
var school; // 创建school命名空间
if(!school) school = {};

1. 利用构造函数

// 返回Student构造函数来导出公共API
school.Student = (function() {
function Student() {

}
// ...... 定义Student的原型对象和私有属性和方法 ........
return Student; // 返回Student构造方法导出公共API
})();

2. 返回命名空间对象

如果模块API包括多个单元,则它可以返回命名空间对象

// 为school添加students模块
school.students = (function() {
// 这里定义了很多类如课程类/成绩类, 使用局部变量和函数
function Subject() { /* ... */ }
function Grade() { /* ... */ }

// 通过返回命名空间对象将API导出
return {
Subject: Subject,
Grade: Grade
};
})();

3. 通过关键字new调用

另外一种类似类似技术:把模块函数当做构造函数,通过new来调用。把它们(公共API)赋值给this属性来将其导出

school.students = (new function() {
// ..... 这里省略了代码 ......

// 将API导到this对象中
this.Subject = Subject;
this.Grade = Grade;

// 注意,这里没有返回值
}()); // 括号写在里面。这里是创建新实例,new后面应紧跟构造函数的调用而不是表达式

4. 已定义命名空间对象

作为一种替代方案,如果已经定义了全局命名空间对象,通过模块函数可以直接设置那个对象的属性。

// 如果已经定义了命名空间对象
var school; // 创建school命名空间
if(!school) school = {};
school.students = {}; // student命名空间已经定义
(function(students) {
// ..... 这里省略了代码 ......

// 将公共API导到上面定义的命名空间中
students.Subject = Subject;
students.Grade = Grade;
// 这里也不需要返回值
})(school.students);

为此,导出公共API的方式已经讲完。

本文链接


    
[3]【JS跨域取XML】之——借助AS的URLLoader
    来源:    发布时间: 2013-11-06

最近接到一个功能拓展需求,新需求中所引用的数据接口却只能提供XML格式……无奈自身功力有限,没有想到JS方面理想的解决方案,只好寻求AS工程师的帮忙,经过近2天的联调,最终解决了各浏览下的跨域访问。

下面记录demo版代码:

父页面HTML:

<iframe id="hiddenIframe" ></iframe>
<button value="获取数据" onclick="getData()"></button>
<!-- 为什么没有直接display:none;或者visibility: hidden;? 【稍后解释:标记】-->

父页面JS:

document.domain = "xxx.com";
function getData(data) {
if (data == "" || data == undefined || data == null) {
sendData("a=1&b=2"); //参数格式任意,相当于你get请求时发的参数
}
else {
alert("获取的数据:" + data)
}
}
function sendData(param) {
var childWindow = document.getElementById('testIframe').contentWindow;
childWindow.sendData(param); //驱动作用,驱动隐藏域内的方法去调用AS中获取XML的API方法
}
function change() {
document.getElementById("testIframe").src = "xx.html"; //隐藏域URL
}

子页面JS:

document.domain = "xxx.com";
function sendData(paramFromParent) {
var severUrl = 'xxx.com';
//此处对paramFromParent进行处理 获得完整的方位xxx.xml的URL
//然后调用AS的URLLoader方法去获取URL下的数据
//获取成功后调用下面的方法驱动父页面中的getData方法
}
function getData(backData) {
window.parent.getData(backData);
}

标记:没有用display或者visibility是因为:在IE浏览器下,当你的iframe元素设置样式为此两点时候,框架内的JS不进行加载,也就无法进行通信了......

成功跨域...下班...~

本文链接


    
最新技术文章:
▪css white-space:nowrap属性用法(可以强制文字不...
▪IE里button设置border:none属性无效解决方法
▪border:none与border:0使用区别
▪html清除浮动的6种方法示例
▪三个不常见的 HTML5 实用新特性简介
▪css代码优化的12个技巧
▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
▪小技巧处理div内容溢出
▪html小技巧之td,div标签里内容不换行
▪纯CSS实现鼠标放上去改变文字内容
▪li中插入img图片间有空隙的解决方案
▪CSS3中Transition属性详解以及示例分享
▪父div高度不能自适应子div高度的解决方案
▪告别AJAX实现无刷新提交表单
▪从零学CSS系列之文本属性
▪HTML 标签
▪CSS3+Js实现响应式导航条
▪CSS3实例分享之多重背景的实现(Multiple background...
▪用css截取字符的几种方法详解(css排版隐藏溢...
▪页面遮罩层,并且阻止页面body滚动。bootstrap...
▪CSS可以做的几个令你叹为观止的实例分享
▪详细分析css float 属性以及position:absolute 的区...
▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
编程技术 iis7站长之家
▪可以给img元素设置背景图
▪不通过JavaScript实现的自动滚动视差效果
▪div+CSS 兼容小摘
▪CSS的inherit与auto使用分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3