2009 3月 7 二零零九年

在Javascript中调用多个Windows的onload函数

下面,我有挖,因为情况commaned它的另一个小的Javascript弄虚作假的peice。 在我的网站之一,我有这种情况,在那里我有两次实施“windows.onload”。 将来到像我这样的经验的心(我必须诚实地说,因为我一直在使用JavaScript框架和图书馆,我福尔戈我自己...伤心,但真正做简单的事情)的第一件事,就是下面的方法...

的window.onload = onloadfn1;
的window.onload = onloadfn2;
的window.onload = onloadfn3;
等等......

抱歉地说,但是,这不会工作,不想讨论太多的Javascript执行科学......但根据我最近的经验,只有最后一个函数(onloadfn3)会生病实际上得到执行。

在正常情况下,与矿(后来,我谈一点),你可以做下列之一执行复式的onload函数....

或类似这样的东西

函数doOnLoad(){
         onloadfn1();
         onloadfn2();
         onloadfn3();
 }
的window.onload = doOnLoad;

对于我目前的状况,我不能使用上述...
为什么我需要调用windows.onload两次,而不是在一个单一的onload函数调用两个函数? 这里是快看看我的问题陈述...

“我的网站页面结构像WordPress主题.... 即有一个共同的header.php文件,包括Footer.php获取到所有的网站页面。 那里是中Footer.php的onload的功能implementaion做一些常见的onload函数。 有几页,需要自己的OnLoad的东西,除了共同onload函数所做的。 如果我给回调函数直接在window.onload处理程序,它会随着骑在Footer.php以前分配的回调“

.... 是我的问题的理解 :)

好吧! 有几个解决方案,我没有找到。 他们都非常相似,主要由西蒙·威利森(给出一个解决方案implementions http://simonwillison.net/2004/May/26/addLoadEvent/ )...

解决方案:

只是这段JavaScript代码添加到网站...

功能addLoadEvent(FUNC){
     oldonload = window.onload的;
     (typeof运算的window.onload ='功能'){
       的window.onload =功能
     }否则{
        =(){
            (oldonload){
                   oldonload()
           }
          函数()
        }
    }
 }

并调用,而不是通常“windows.onload”

 addLoadEvent(FunctionToRunOnPageLoad);
 addLoadEvent(函数(){
 / *更多的代码运行在页面加载*
 }); 

这个代码片断的优势...
1。 首先,它可以让你有多个windows.onload事件,呼吁从你的代码的单独部分,不overridding以前的定义
2。 这实在是不显眼的。 它可以被放置在与其它脚本文件中或在一个单独的文件。
3。 它的工作原理window.onload的,即使已经设置。


2008 2008年 09月 20日

在XSL / XSLT TEXTAREA的崩溃问题


问题陈述:
我跑进这是一个有关的XSL文本域的问题。 在简单的话,问题出现了,当你有一个空白<TEXTAREA>标记,然后将其折叠<textarea />。
也就是说,如果你有像您的XSL和XML数据textarea的值以下,返回什么...

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ TEXTAREA>

由于浏览器不认识到这一点,这将导致其他形式的HTML文本区域运行。

可能解决方案:

在XSL中添加非破空间后的XSL():价值tag.BEWARE,要照顾这个额外的空间,在这一领域的客户端验证,您添加。

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ TEXTAREA>


<xsl:value-of select="concat (DESCRIPTION,'')"/>


插入1 <xsl:value-of select="@unknown" />标签指向一个未知的属性。 这将强制PHP XSLT分析器生成一个文本区域的开幕和闭幕的标签,即使它有什么之间。


插入<xsl:text>领域,包含空间,强制关闭标签。

然而,虽然上述方案似乎来解决这个问题,我仍然不相信他们是正确的和最佳的方式来解决它。 如果有任何其他更好的方式解决这个怪癖,请让我们知道。


2008 2008年 09月 14日

各种一个XSL试验条件的(收集的XSL:if和xsl:当测试条件)

我每次都做一个XSL:IF或XSL:当测试,我回去的参考书籍。 我似乎永远记住他们。 我以为那里会有更多和我一样,他们宁愿喜欢所有的人,可能在一个地方,需要时随时可以称为。

对于那些谁是新的XSL的语法:中频

<xsl:if test="expression">
< - 内容:模板 - >
</ XSL:如果>

在xsl:如果/ XSL:当测试集
以下条件是所有简单和自明。 所以,我相信它不会需要太多的解释

<xsl:if test="position()=last()-1">
这样,如果列表中的最后一个元素!
</ XSL:如果>

<xsl:if test="SALARY> 5000“>
这个人的工资是比卢比更大。 5000
</ XSL:如果>

<xsl:if test="count(JOBS)> 3“>
在此列表中的工作有3个以上!
</ XSL:如果>

<xsl:if test="(@DEPT ='SALES')或(@JOINYEAR = '1997')">
此人是从1997年的销售部门或加入他的新年
</ XSL:如果>

<xsl:if test="EXPERIENCE">
此人有至少一个经验的子元素。
</ XSL:如果>

<xsl:if test="@HOBBY">
人有一个爱好属性。
</ XSL:如果>

以及XSL:选择/ XSL的条件,可用于相同的文字:

XSL:选择

XSLT的XSL:choose指令是类似的xsl:如果,但有几个关键的不同:
•一个XSL:选择单元可以测试多个条件,根据这些条件是真正的结果树,并添加不同的节点。
•一个xsl:选择元素可以有一个默认的模板添加到结果树中,如果条件都不是真实的。 (比较的xsl:如果没有相当于一个“其他”的条件。)
•XSL:选择元素具有特定的子元素,有必要为它工作,而你可以把任何格式的内容,你想里面一个xsl:if元素。

<xsl:choose>的
<xsl:when test="boolean-expression">
做一些事情时,这个布尔表达式是TURE
</ XSL:当>
<xsl:otherwise>做别的东西</ XSL:否则>
</ XSL:选择>


2008 2008年 8月 13

分隔字符串标记化里面一个XSL

如果你的要求是分裂一个XML节点的值,包含分隔的字符串值,将个别项目,那么你已经达到了正确的地方......看看下面的例子。 如果你熟悉XML和XSL的一点点......我不认为你需要任何解释。
另外,这个例子包括使用XSL:XSL函数一样调用模板,XSL:子串以前,XSL:子串后,如果是你是什么。

XML进行转换(food.xml): -
承担的任务是由逗号分隔的字符串标记化标签“关键字”,

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<keywords>Fruits, Vegetables, Pulses, Meat, Cereals </keywords>
</food>

XSL(food.xsl): -

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>XSL 1.0 Delimited String Tokeniser</title>
</head>
<body>
<xsl:value-of select="food/meta"/>
<div >
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="food/keywords" />
<xsl:with-param name="delimitr" select="','" />
</xsl:call-template>

</div>
</body>
</html>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimitr" />
<xsl:choose>
<xsl:when test="contains($string, $delimitr)">
<div style="border:1px solid red;">
<h3><xsl:value-of select="substring-before($string,$delimitr)" /></h3>
<xsl:variable name="data" select="substring-before($string,$delimitr)"/>
</div>
<xsl:call-template name="tokenize">
<xsl:with-param name="string" select="substring-after($string, $delimitr)" /><xsl:with-param name="delimitr" select="$delimitr" /></xsl:call-template>
</xsl:when>
<xsl:otherwise>
<div style="border:1px solid red;">
<h3><xsl:value-of select="$string" /></h3>
</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

结果输出的HTML: -

<div>
<div style="border: 1px solid red;">
<h3>Fruits</h3>
</div>
<div style="border: 1px solid red;">
<h3> Vegetables</h3>
</div>
<div style="border: 1px solid red;">
<h3> Pulses</h3>
</div>
<div style="border: 1px solid red;">
<h3> Meat</h3>
</div>
<div style="border: 1px solid red;">
<h3> Cereals </h3>
</div>
</div>

不用说了......只是改变参数“delimitr”,您选择的分隔符


2008 2008年 8月 4

一个位置(在XSL)的问题...是什么?

我有这个strage问题,同时创造一个XSL的今天。 看着整个净的答案,但couldnt找到任何.... 其实我猜! DINT我知道我的问题是什么,所以我看的呢?

无论如何! 以防万一你有这同样的问题也莫名其妙的力量,你成功地降落在此页的权力......你会感谢我万吨......如果你不小心降落此页面上的一些奇怪的命运和你刚好是一个XSL开发, 会尽此注意现在,未来的事业,如果有一天,你面对这个问题,那么该部队可能不会与你同在。

问题陈述:
我有这样的XML,其中有两个节点与多个项目中,这两个节点之间的项目有一一对应。 在下面的例子中,每个在节点<array项目name="PLAYURL" />相关(相应的位置)节点<array的一个项目name="SITENAME"

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

现在,我有一个循环,我通过<array name="SITENAME">循环,我想以获得在<array name="PLAYURL">相关项目(在相应的位置),

你会normaly尝试做的是...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

对不起!! 这不会工作......啊!! Surpised ...

现在,你可能会想尝试一下,像这样...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

并再次惯常的工作......现在,你抓你的头,试图联系大家,你认为谁知道一些的XSL,可能是有帮助......你尽一切其他的选项,它仍然不会工作嘛! 那是什么发生在我ATLEAST ...

回复DONT绝望!! 试试这个

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

不要问我为什么工作。 因为我没有权利的原因......如果你这样做! 请不要删除评论。 这可能是非常有用的。 还可以! 如果你有更好的这篇文章的标题,请给我一条线 :)


2008 2008年 8月 2

设置在XSL中的DOCTYPE

上周,我创建了一个客户端progessive HTML / CSS布局,在IE6,IE7和FF测试,似乎完全正常......直到! 布局更进一步下来manufacting周期。 它失败了。 页面布局元素在HTML布局时被转换成XSL和XML应用到它...游民!地方去!

无法入睡周末,预计在星期一早上,当我要解决这个的SH **。 但现在有一点在处理这样的情况下(浏览器怪癖,我的意思)的遭遇,我知道了,别的什么也不做DOCTYPE .... 和它...

问题:
你想控制的DOCTYPE,因为你的转型将包括一个默认的DOCTYPE明确,你的布局将是折腾了。

解决方案:
XSLT规范提供输出方法来设置的体例选择的DOCTYPE。 此外,我们的UI开发,感兴趣的主题将是HTML输出方法XML输出的方法

好吧! 之前,你觉得无聊,这里是修复。

例如,如果你在你的HTML版本有以下DOCTYPE: -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

然后在XSL,你就必须具备以下条件: -

<xsl:output method="html" doctype-system="http://www.w3.org/TR/html4/loose.dtd" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" indent="yes" />

最后! 确保您的XSLT输出,服从您所选择的DOCTYPE。


2008 2008年 5月 4

包括XSL内的XSL

如果XML / XSL转换是你的结构域,然后还有时候,我们需要一个动态代码peice要使用库项目(可重复使用的要作出)。 我的意思,可能与这个示例场景中更明确。

想象你正在创建一个网站(使用的XML,XSL transfroms当然)和大多数的网页将有一个评论模块 好吧! 然后,复制或粘贴此代码到每一页的模板(我不说,但维修和返工一场噩梦),甚至更好,你创建包含文件可以在任何你想它在您的网页拉( S)...
那么,如何创造一个XSL INCLUDE文件,它包括在另一个XSL文件 这里是如何...

只是把事情说清楚......这里是快速的文件列表,您将创建......在这里,我们将纳入食品父页左右的水果和蔬菜的信息。

1。 food.xml - XML数据文件的转换将应用于
2。 food.xsl - 主要XSL文件,这将改变我们的food.xml
3。 inc_fruits.xsl - 的XSL包括会使水果的数据文件
4。 inc_vegtables.xsl - XSL的文件,将呈现vetetables数据

我不认为我有解释太多,以上元素的代码,将自明...

FOOD.XML


<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<date>July 2008</date>
<description>All about things we eat everyday</description>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>

<vegetables>
<item name="spinach" moreinfo="http://www.spinach.com">Spinach is full of iron</item>
<item name="asparagus" moreinfo="http://www.asparagus.com">Asparagus contains loads of vitamin D </item>
<item name="fenugreek" moreinfo="http://www.fenugreek.com">Fenugreek is rich in vitamin C</item>
</vegetables>
</food>


FOOD.XSL


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="inc_fruits.xsl" />
<xsl:include href="inc_vegetables.xsl" />
<xsl:template match="/">
<html>
<head>
<title>Title</title>
</head>
<body>
<h3><xsl:value-of select="/food/description" /></h3>
Modification Date : <xsl:value-of select="/food/date" />
<hr/>
<h5> About Fruits</h5>
<xsl:call-template name="about_fruits"/>

<hr/>
<h5> About Vegetables</h5>
<xsl:call-template name="about_vegetables"/>

<hr/>
</ BODY>
</ HTML>
</ XSL模板>
</ XSL样式表>


INC_FRUITS.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_fruits">
<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>


INC_VEGETABLES.XSL

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" />
<xsl:template name="about_vegetables">
<xsl:for-each select="/food/vegetables/item/@*">
attribute name : <xsl:value-of select="name()"/>
attribute value : <xsl:value-of select="."/> <br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

下载上述所有文件(252下载)


2008 2008年 4 4日

工作XSLT的XML节点属性

如果您使用XML和XSL,那么你有可能遇到的时间时,你必须发挥你的XSL XML节点的属性和值。 它们负载对此嗦信息的网站,但我发现没有一个简短和精确的......这是没有XML / XSL的教程,但我试图把一些金手指列表的排序...

看起来像这样的示例XML,我们将与...

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="food.xsl"?>
<food>
<fruits type="tropical">
<item name="mango" moreinfo="http://www.mango.com">Mango is the king of fruits</item>
<item name="banana" moreinfo="http://www.banana.com">Banana once a day , keeps the doctor away</item>
<item name="orange" moreinfo="http://www.orange.com">Orange is the color and rich in vitamin C</item>
<item name="Papaya" moreinfo="http://www.papaya.com">Papaya - Hot when raw, cold when ripe</item>
</fruits>
</food>

所以让我们开始改变我们的上面的XML使用XSL

例1:显示在选定的属性值

<xsl:value-of select="/food/fruits/item[@name='orange']" /><br />
to get more information about <a href="{/food/fruits/item[@name='orange']/@moreinfo}" target="new" ><xsl:value-of select="/food/fruits/item[@name='orange']/@name" /> </a>

HTML结果会看起来像

Orange is the color and rich in vitamin C,
to get more information about <a href="http://www.orange.com" target="new">


例2:遍历并显示所有XML属性名称和值

<xsl:for-each select="/food/fruits/item/@*">
attribute name : <xsl:value-of select="name()"/>,
attribute value : <xsl:value-of select="."/> <br />
</xsl:for-each>

HTML结果会看起来像


attribute name : name, attribute value : mango
attribute name : moreinfo, attribute value : http://www.mango.com
attribute name : name, attribute value : banana
attribute name : moreinfo, attribute value : http://www.banana.com
attribute name : name, attribute value : orange
attribute name : moreinfo, attribute value : http://www.orange.com
attribute name : name, attribute value : Papaya
attribute name : moreinfo, attribute value : http://www.papaya.com


下载上述所有文件(880下载)



观看这个空间,我会不断更新这一新的发现......


NDK的家 | 表达它 表示唇腭裂 表示Penmenship 表示敬畏 表达自己