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 表示敬畏 表達自己