在URL查询字符串中指定样式

时间:2011-12-07 15:28:44

标签: javascript html css url

假设我有一个网页

http://foo.com/bar.html

有什么方法可以提供指向该页面的链接,例如,为了使所有<b>部分变红?

我猜我需要bar.html中的一些脚本和类似

的URL

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

这是否可行,如果可行,是否有标准方法可以做到这一点?

5 个答案:

答案 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';
    }

}

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