假设我有一个网页
http://foo.com/bar.html
有什么方法可以提供指向该页面的链接,例如,为了使所有<b>
部分变红?
我猜我需要bar.html中的一些脚本和类似
的URL http://foo.com/bar.html?style="b{color:red;}"
这是否可行,如果可行,是否有标准方法可以做到这一点?
答案 0 :(得分:1)
您可以通过location.search
读取查询字符串,然后将您想要的任何逻辑应用于您获得的字符串。
小心不要让自己受到XSS攻击。
答案 1 :(得分:1)
为什么不用CSS尝试呢?
inside example.css file:
br
{
color:red;
}
答案 2 :(得分:1)
我想说最简单,最抽象的方式就是将风格直接附加到头部。尽管如此,如上所述,您可能需要解析它并验证其正确的格式并避免攻击。您将让每个Web用户直接访问您的样式表。
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;}
答案 3 :(得分:0)
您可以自定义javascript以执行任何操作。没有预先存在的,通用的方法。
您可以检查document.location.hash
以提取值并为b
元素添加新样式。查询字符串解析有点困难,因为默认情况下它没有内置到JS中。
答案 4 :(得分: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';
}
}