假設我有一個網頁指定URL查詢字符串風格
http://foo.com/bar.html
有什麼辦法,我可以提供一個鏈接到該頁面,例如起見,使所有<b>
段紅?
我猜我需要一個bar.html一些腳本和一個URL像
http://foo.com/bar.html?style="b{color:red;}"
這是可能的,如果是這樣,有做一個標準的方式?
假設我有一個網頁指定URL查詢字符串風格
http://foo.com/bar.html
有什麼辦法,我可以提供一個鏈接到該頁面,例如起見,使所有<b>
段紅?
我猜我需要一個bar.html一些腳本和一個URL像
http://foo.com/bar.html?style="b{color:red;}"
這是可能的,如果是這樣,有做一個標準的方式?
您可以通過閱讀location.search
查詢字符串,然後申請任何你想要的邏輯,你回來的字符串。
要小心,不要打開自己,以一個XSS攻擊。
您可以自定義的JavaScript做任何你想要的。沒有預先存在的通用方法來做到這一點。
你可以檢查document.location.hash
拉出來的值,並添加一個新的樣式b
元素。查詢字符串解析有點困難,因爲默認情況下它不是內置於JS中的。
好確定,我只是想知道這是否是一個常見的成語。 – paperjam
@paperjam在URL中傳遞代碼從來都不常見。它不應該是 –
你可以處理程序添加到鏈接元素。
你可以這樣說:
document.getElementById('clickme').onclick = function(){
var bolds = document.body.getElementsByTagName("b");
for(var i = 0; i < bolds.length; i++){
bolds[i].style.backgroundColor = 'red';
}
}
你爲什麼不使用CSS嘗試嗎?
inside example.css file:
br
{
color:red;
}
我會說最簡單和最抽象的方式就是將風格直接追加到頭部。雖然如上所述,您可能想要解析它並驗證其正確的格式並避免攻擊。你會讓每個網絡用戶直接訪問你的樣式表。
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;}
關於襲擊 - 可能發生的更糟的是什麼?事實上,這不是公共消費(目前),所以這是一個有爭議的問題。 – paperjam
爲什麼這種方式,而不是用CSS? – T9b
@ T9b,用戶可能想要突出顯示外部頁面上的內容(我的假設) – Jakub
@ T9b目標文檔總是相同 - 我希望它的不同部分根據引用鏈接的「href」高亮顯示。 – paperjam