2012-05-17 73 views
5

根據此網站externalcss3 styleSheet對象的CSS規則對象允許您訪問樣式表的各個規則。CSS規則對象

所以如果我嘗試在stackoverflow頁面上運行這段代碼(*),使用javascript控制檯,我希望看到一些CSS規則寫在這個頁面http://cdn.sstatic.net/stackoverflow/all.css?v=04e0337352b3

(*)

var mysheet=document.styleSheets[0] 
var myrules=mysheet.cssRules? mysheet.cssRules: mysheet.rules 
for (i=0; i<myrules.length; i++) { 
    console.log(myrules[i].selectorText.toLowerCase()); 
} 

事實上的console.log的結果是什麼,從我所期望的不同:

object[type="application/x-shockwave-flash"], object[type="application/futuresplash"], object[data*=".swf"], object[src*=".swf"], embed[type="application/x-shockwave-flash"], embed[type="application/futuresplash"], embed[src*=".swf"] 

什麼我錯過了?對不起,我的無知和你的時間。

+1

我實際上發現在唯一的樣式表(0)中沒有規則。仍然很奇怪。 – Marcin

+1

(或者Firefox中的一個安全錯誤 - 甚至是陌生人!) – Marcin

+0

我敢打賭,你看到的樣式表正在被瀏覽器插件注入...有點像adblock,也許(除了adblock將樣式表放在最後,所以必須是某種東西其他)。 –

回答

5

看來你只能訪問CSS文件中的規則,如果它們來自同一個域。

閱讀本主題:Reading the rules of a cross domain CSS file in DOM

+0

絕對正確,儘管我很好奇OP爲什麼可以讀取任何規則。 – apsillers

+0

@apsillers - 我不知道。我正確地得到一個TypeError:'無法讀取null'屬性'長度'。 –