首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用用户脚本更改特定文件扩展名的链接颜色?

如何用用户脚本更改特定文件扩展名的链接颜色?
EN

Stack Overflow用户
提问于 2016-10-22 23:49:05
回答 1查看 679关注 0票数 1

我的学校网站有家庭作业下载链接,我想用不同的颜色来区分它们。

微软Word文件将是蓝色的,.RTF文件将是绿色的。

因为我是新手,所以我的脚本都不起作用。

我的剧本:

代码语言:javascript
复制
// ==UserScript==
// @name         Homework Help
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Color links for different file extensions
// @author       You
// @match        (My School Website)
// @grant        none
// ==/UserScript==

function getFileExtension(filename) {
    return filename.split('.').pop();
}

(function() {
    'use strict';

    // Your code here...
    var links = document.getElementByTagName("a");
    var element;

    for (var i = 0; i < links.lenth(); i++){

        element = rtfs[i];

        if( getFileExtension(element.href) == "rtf" ){
            element.style.color = "green";
        }
    }
})();

我试着在谷歌上搜索,但没有找到解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-23 02:30:16

  1. 您的学校网站可能会使用AJAX加载文件列表。如果是这样的话,您需要使用AJAX感知的技术。
  2. 此外,正如wOxxOm所指出的,代码中存在语法错误。
  3. 有时,取决于站点的CSS,您可能需要 flag

下面的完整脚本使用jQuery和waitForKeyElements()来处理项目1和2(它也适用于静态页面):

代码语言:javascript
复制
// ==UserScript==
// @name     _Color code links by file extension
// @match    http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
//- The @grant directive is needed to restore the proper sandbox.

// PICK A MORE PRECISE SELECTOR IF YOU CAN.
waitForKeyElements ("a", colorLink);

function colorLink (jNode) {
    var fileHref        = jNode.attr ("href");
    if ( ! fileHref)    return; //-- Not every link has an href.

    var fileExt         = fileHref.split ('.').pop ().toLowerCase ();
    switch (fileExt) {
        case "rtf":
            jNode.css ("color", "green");
        break;
        case "doc":
            jNode.css ("color", "pink");
        break;
        default:
            //-- No action needed.
        break;
    }
}

注意: jQuery选择器"a"将过滤每一个链接!但是我们需要页面细节来选择一个更有针对性的选择器。使用this question显示的技术来缩小选择范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40198180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档