Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript改变CSS样式,使链接与普通文本相同?_Javascript_Css_Firefox Addon_Readability - Fatal编程技术网

如何使用Javascript改变CSS样式,使链接与普通文本相同?

如何使用Javascript改变CSS样式,使链接与普通文本相同?,javascript,css,firefox-addon,readability,Javascript,Css,Firefox Addon,Readability,您可能已经知道,链接会降低在线文本的可读性。这一点在维基百科科学文章这样的页面上尤为明显,在维基百科科学文章中,每一个术语都与维基百科链接在一起,因此都是亮蓝色的。我正在尝试制作一个带有切换按钮的Firefox插件,使链接看起来像普通文本 有一个Javascript单行程序可以将正文中链接的CSS样式更改为任何底层文本样式,这似乎是合理的。我的假设正确吗?如果是,是什么?如果没有,最简单的方法是什么?您应该能够用几种方法来实现这一点。不过,我不打算写这一行。如果我不想加载或假设之前加载jQuer

您可能已经知道,链接会降低在线文本的可读性。这一点在维基百科科学文章这样的页面上尤为明显,在维基百科科学文章中,每一个术语都与维基百科链接在一起,因此都是亮蓝色的。我正在尝试制作一个带有切换按钮的Firefox插件,使链接看起来像普通文本


有一个Javascript单行程序可以将正文中链接的CSS样式更改为任何底层文本样式,这似乎是合理的。我的假设正确吗?如果是,是什么?如果没有,最简单的方法是什么?

您应该能够用几种方法来实现这一点。不过,我不打算写这一行。如果我不想加载或假设之前加载jQuery,我可能会从getElementByTagName开始

var anchors = document.getElementsByTagName('a');
anchors = Array.prototype.slice.call(anchors);
anchors.forEach(function (anchor) {
    anchor.style.textDecoration = 'none';
    anchor.style.color = 'black'; // to taste
    // et. al. You'll need to define these CSS rules.
});
您可能需要进行一些检查,以确保这些内容确实存在于文章的文本中,而不是来自导航菜单、侧栏或页脚的锚定

如果你真的可以使用单衬里,它可以是这样的:

Array.prototype.forEach.call(document.getElementsByTagName('a'), function (anchor) {/* CSS */});

你应该可以用几种方法来做到这一点。不过,我不打算写这一行。如果我不想加载或假设之前加载jQuery,我可能会从getElementByTagName开始

var anchors = document.getElementsByTagName('a');
anchors = Array.prototype.slice.call(anchors);
anchors.forEach(function (anchor) {
    anchor.style.textDecoration = 'none';
    anchor.style.color = 'black'; // to taste
    // et. al. You'll need to define these CSS rules.
});
您可能需要进行一些检查,以确保这些内容确实存在于文章的文本中,而不是来自导航菜单、侧栏或页脚的锚定

如果你真的可以使用单衬里,它可以是这样的:

Array.prototype.forEach.call(document.getElementsByTagName('a'), function (anchor) {/* CSS */});
如果是:

var links = document.getElementsByTagName('a');
for(var i=0;i<links.length;i++){
     links[i].style.appearance = 'none';
}
var links=document.getElementsByTagName('a');
对于(var i=0;i如果:

var links = document.getElementsByTagName('a');
for(var i=0;i<links.length;i++){
     links[i].style.appearance = 'none';
}
var links=document.getElementsByTagName('a');

对于(var i=0;i应用以下样式应该可以:

a{
颜色:继承!重要;
文字装饰:继承!重要;
}

您可以将这些样式应用于所有网页。如果您只想将它们应用于单个网页,则应将
标记插入该网页中。

应用以下样式应该可以:

a{
颜色:继承!重要;
文字装饰:继承!重要;
}

您可以将这些样式应用于所有网页。如果您只想将它们应用于单个网页,则应将
标记插入该网页。

要使用类似wlad的nsIStyleSheetSercie,请执行此操作。只需在启动时运行此操作,确保cssUri是全局变量,然后在关闭时运行unregister函数

var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);
var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);
var css = 'a {color: inherit !important; text-decoration: none !important; }';
//var cssEnc = 'data:text/css;base64,' + window.btoa(css);
var cssEnc = encodeURIComponent(css);
var cssUri = makeURI('data:text/css,' + cssEnc);
sss.loadAndRegisterSheet(cssUri, sss.USER_SHEET);
//when want to unregister run this:
//sss.unregisterSheet(cssUri, sss.USER_SHEET);

这将对所有站点应用样式表。我在下面的评论中询问了wlad如何使其成为站点专用的。如果使用@document

像wlad建议的那样使用nsIStyleSheetSercie,请执行此操作。只需在启动时运行此操作,确保cssUri是一个全局变量,然后在关闭时运行unregister函数

var sss = Components.classes['@mozilla.org/content/style-sheet-service;1'].getService(Components.interfaces.nsIStyleSheetService);
var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);
var css = 'a {color: inherit !important; text-decoration: none !important; }';
//var cssEnc = 'data:text/css;base64,' + window.btoa(css);
var cssEnc = encodeURIComponent(css);
var cssUri = makeURI('data:text/css,' + cssEnc);
sss.loadAndRegisterSheet(cssUri, sss.USER_SHEET);
//when want to unregister run this:
//sss.unregisterSheet(cssUri, sss.USER_SHEET);


这将把样式表应用于所有网站。我在下面的评论中问过wlad如何使用@document使其成为网站的专用工具,你会如何使用CSS?@Xotic750:这是一个大致相同的问题,因为你可以使用Javascript编辑CSS属性。好的,让我为你重新表述一下。如果你有权访问CSS规则(即网站的page.css文件),您将如何编写css规则以使
锚定
s看起来像普通文本?一旦您知道了这一点,就可以非常简单地访问并更改这些规则。@Xotic750:…这是我的问题。我根本不是网页设计师,所以我的问题可能很简单,我怀疑这就是你的意思。不过,我不知道答案,也无法通过搜索找到答案。在上或在这里搜索带有css的
样式锚
,一旦你了解了这一点,你就可以尝试使用
cssRules
Javascript(我在上面的评论中链接了文档)可以使用很多方法,包括使用库。您如何使用CSS?@Xotic750:这是一个大致相同的问题,因为您可以使用Javascript编辑CSS属性。好的,让我为您重新表述一下。如果您可以访问CSS规则(即网站的page.CSS文件),您将如何编写CSS规则以使
锚定
s看起来像普通文本?一旦您知道了这一点,就可以非常简单地访问这些规则并对其进行更改。@Xotic750:…这是我的问题。我根本不是网页设计师,所以我的问题可能很简单,我怀疑这就是你的意思。不过,我不知道答案,也无法通过搜索找到答案。在上或在这里搜索带有css的
样式锚
,一旦你了解了这一点,你就可以尝试使用
cssRules
Javascript(我在上面的评论中链接了文档)可以使用很多方法,包括使用库。返回
HTMLCollection
nodeList
而不是
array
很好的调用!更正了。没问题。您同样可以执行
array.prototype.forEach.call(锚定,函数…
而不是
分割它们。;)确实如此,但如果以后不每次调用“call”,就不能将其用作数组。它也将不再是
活动的
;)返回
HTMLCollection
nodeList
不是
array
好的调用!更正。没问题。您可以同样执行
array.prototype.forEach.call(锚定、函数…
而不是
slice
它们)的确如此,但是你不能在以后不每次调用“call”就将其用作数组。它也不再是
live
;)嘿,我想知道我的风格没有起作用,文档行有问题:@-moz document domain(wikipedia){a{color:black!重要;}@Noit:这应该是
domain(wikipedia.org)
当然。嘿,我想知道我的风格没有起作用,文档行有问题:@-moz文档域(wikipedia){a{color:black!重要;}}@Noit:这应该是
域(wikipedia.org)
当然。在上面我给你的代码中使用这个更新的css,在上面的例子中