2011-12-07 105 views
0

假設我有一個網頁指定URL查詢字符串風格

http://foo.com/bar.html

有什麼辦法,我可以提供一個鏈接到該頁面,例如起見,使所有<b>段紅?

我猜我需要一個bar.html一些腳本和一個URL像

http://foo.com/bar.html?style="b{color:red;}"

這是可能的,如果是這樣,有做一個標準的方式?

+1

爲什麼這種方式,而不是用CSS? – T9b

+0

@ T9b,用戶可能想要突出顯示外部頁面上的內容(我的假設) – Jakub

+0

@ T9b目標文檔總是相同 - 我希望它的不同部分根據引用鏈接的「href」高亮顯示。 – paperjam

回答

1

您可以通過閱讀location.search查詢字符串,然後申請任何你想要的邏輯,你回來的字符串。

要小心,不要打開自己,以一個XSS攻擊。

0

您可以自定義的JavaScript做任何你想要的。沒有預先存在的通用方法來做到這一點。

你可以檢查document.location.hash拉出來的值,並添加一個新的樣式b元素。查詢字符串解析有點困難,因爲默認情況下它不是內置於JS中的。

+0

好確定,我只是想知道這是否是一個常見的成語。 – paperjam

+1

@paperjam在URL中傳遞代碼從來都不常見。它不應該是 –

0

你可以處理程序添加到鏈接元素。

你可以這樣說:

document.getElementById('clickme').onclick = function(){ 

    var bolds = document.body.getElementsByTagName("b"); 
    for(var i = 0; i < bolds.length; i++){ 
     bolds[i].style.backgroundColor = 'red'; 
    } 

} 

演示:http://jsfiddle.net/maniator/HH2Cv/

+0

所以這是源URL的腳本? – paperjam

+0

@paperjam它可以。 – Neal

1

你爲什麼不使用CSS嘗試嗎?

inside example.css file: 
br 
{ 
color:red; 
} 
1

我會說最簡單和最抽象的方式就是將風格直接追加到頭部。雖然如上所述,您可能想要解析它並驗證其正確的格式並避免攻擊。你會讓每個網絡用戶直接訪問你的樣式表。

window.onload = function() { 
    if(document.location.search.indexOf('style=')>-1) { 
    var style = decodeURI(document.location.search.substring(document.location.search.indexOf('style=') + 6)); 
    if(style.indexOf(',')>-1) { style = style.substring(0,style.indexOf(',')); } 
    var elem = document.createElement('style'); 
    elem.type='text/css'; 
    elem.innerHTML = style; 
    document.head.appendChild(elem); 
    } 
}; 

然後,你可以添加任何和所有的風格修改您的URI這樣?style=body{background-color:blue;}%20b{color:red;}

+0

關於襲擊 - 可能發生的更糟的是什麼?事實上,這不是公共消費(目前),所以這是一個有爭議的問題。 – paperjam

相關問題