2012-02-06 21 views
1

這是一個相當複雜的問題 - 至少對我而言。爲什麼不應用樣式表(通過jQuery添加)?

我已經寫了一個小書籤(是的,我做了這樣的事情,當「必要」),在我到目前爲止測試的每個頁面上工作正常。但是今天我遇到了一個不起作用的地方,我不知道爲什麼。

書籤添加內聯樣式表頭標籤的結尾。然後它會在樣式表中添加一個div到身體的末尾,並帶有一個id。

通常情況下,這是有效的,但我意識到這是偶然的。據我所知,這是一個灰色區域,但也許有人比我更清楚,至少可以提供一些建議? (我可以直接申請的風格,是的,但我想如果可能避免它,因爲它是一個維護的負擔。)

書籤是在這裏: http://dl.dropbox.com/u/848981/it/cw/cw.html

而且它不工作的頁面這裏: http://www.professionalsagainstect.com/index.html

更新:一些信息,使它更容易查看它。點擊書籤後:

  • 查看樣式表頭標籤的結尾。它獲得以「cw.css ...」開頭的標題屬性。

  • 它應該被應用的div標籤位於body-tag的末尾並且id =「shield-findword72789」。

更新2: 它看起來像我加入的時候有這樣的事情在身體部分沒有beeing應用樣式表:

<link rel="stylesheet" type="text/css" href="data:text/css."> 

若要解決此我申請最重要的風格直接對我添加的元素進行了檢測。

+0

有一兩件事我注意到的是你的'div#shield-findword72789'的高度是0px,儘管它存在於DOM中。你通常是通過JavaScript分配一個高度的div嗎? – Brandan 2012-02-06 04:03:21

+0

@Michael:不,高度在樣式表中設置。樣式表被添加到head標籤的末尾(通過JavaScript),參見上文。 – Leo 2012-02-06 04:24:07

回答

0

href屬性需要被定義link元素添加到head,就像這樣:

function foo() 
    { 
    /* get head element */ 
    var head=document.getElementsByTagName("head")[0]; 

    /* create link element */ 
    var qUnitCSS = document.createElement("link"); 

    /* rel and type attributes required for lazy loading */ 
    qUnitCSS.rel="stylesheet"; 
    qUnitCSS.type="text/css"; 

    /* append link element */ 
    head.appendChild(qUnitCSS); 

    /* define link href after DOM insertion to lazy load */ 
    qUnitCSS.href="http://qunitjs.com/resources/qunit.css";  
    }() 

這裏是書籤版本:

javascript:void(function foo(){var head=document.getElementsByTagName("head")[0];var qUnitCSS = document.createElement("link");qUnitCSS.rel="stylesheet";qUnitCSS.type="text/css";head.appendChild(qUnitCSS);qUnitCSS.href="http://qunitjs.com/resources/qunit.css";}()) 
+0

謝謝保羅。是的,它需要在鏈接之後應用,但這不是問題。在小書籤中,您會遇到這方面的各種麻煩。最後,我決定添加一些例程,直接在每個元素上添加所有需要的樣式(使用「!important」)。 因此,我編寫了一些elisp函數來獲取樣式表並將其轉換爲jQuery函數。 (這也使得加載速度更快,並且可以將所有內容製作成用戶可以保存的小書籤,也許主要的瀏覽器都會遵循W3C的推薦標準,以便他們可以再次使用小書籤。;-)) – Leo 2014-01-12 03:39:51

+0

@Leo感謝您的更新Leo。很高興知道elisp派上用場,我正在考慮將它用於文本處理。 – 2014-01-13 16:54:40

+0

祝你好運!對我來說,這是一個偉大的工具,因爲我做了很多不同的事情。 – Leo 2014-01-14 23:34:33

相關問題