1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Tech_Query-iBookmarkLet

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 22 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 14.03.2025 08:13 0319a62

iBookmarkLet

Эпоха Web 2.0 характеризуется тем, что различные интернет-компании стремятся использовать веб-браузеры для привлечения пользователей и получения прибыли, предлагая свои собственные браузеры с различной функциональностью. Однако часто эти браузеры недостаточно оснащены полезными функциями, хотя их ядра могут быть одинаковыми, а API расширений несовместимыми. Поэтому одному полезному плагину требуется поддерживать несколько версий кода и установочных пакетов для различных популярных браузеров. . .  Поэтому если проблему можно решить с помощью стандартных HTML/CSS/JavaScript, мы можем использовать универсальный протокол javascript: для создания кнопки закладки, которая будет выполнять нужные действия при каждом нажатии~  Если простое решение с использованием технологии bookmarklet становится недостаточным для удовлетворения новых требований, то исходный код этого проекта может служить основой для создания плагинов для разных версий браузеров (логика работы)~  【Примечание】Код всех установок в этом проекте сжат с помощью UglifyJS ## 【Очистка плавающих слоев сайта одним щелчком мыши】версия 0.5 Публикация статьиhttps://log.fyscu.com/index.php/archives/118/

Основные характеристики

  1. Удаление плавающей рекламы в любом месте страницы
  2. Удаление формы входа, покрывающей всю страницу 3.Удаление прозрачных модальных окон рекламы со ссылками, покрывающими всю страницу
  3. Удаление плавающей рекламы рядом с изображением основного содержания страницы (обычно удаление происходит во второй раз после нажатия на этот инструмент, но это может случайно удалить некоторые функциональные слои страницы, что может повлиять на работу некоторых функций, рекомендовано повторное использование этого инструмента при чистом чтении)

Код установки

   javascript: (function(a,b){function c(a,b){return [].slice.apply(a.getElementsByTagName(b))}function d(a,c){var d=a.currentStyle? a.currentStyle.getAttribute(c):b.defaultView.getComputedStyle(a,null).getPropertyValue(c),e=Number("0px"==d? 0:d); return isNaN(e)? d:e} function e(a,b){for(var c = 0 ; c < b.length ; c++) if(d(a,b[c][0]) == b[c][1]) return 1} function f(a,c,d){for(var e = 0 ; d > e ; e++) try { if(a.parentNode === c) return 1; if(a.parentNode === b) break; a = a.parentNode } catch(f){console.log(f)}} function g(c){ var g=e(c,[["display","none"],["visibility","hidden"],["width",0]]),h=!g&&e(c,[["position","absolute"],["position","fixed"]]); return h&&((a.FLC?!0:d(c,"z-index"))>100)?f(c,b.body,a.FLC?13:3):void 0} var k,i,j,h=c(c(b,"body")[0],"*"); for(i = 0 , j = 0 ; i < h.length ; i++) k=h[i],g(k)&&(k.parentNode.removeChild(k),console.log(k),j++); self.FLC|| (self.FLC=!0),alert([j," из этих чертовых плавающих рекламных слоев было удалено!~","\n","Вы можете попробовать ещё раз нажать на мою кнопку для более эффективной очистки."])},"\n\n","(C)2014 SCU FYclub-RDD").join(""));

【Google 中文划词搜索】v1. 3

Релиз заметки —— http://log.fyscu.com/index.php/archives/210/

Основные характеристики

1.При нажатии на кнопку в панели закладок будет использована Google Китайская Поиск. 2. Автоматически выбирается случайным образом один из лучших Google серверов за границей, пользователям не требуется использовать прокси для получения быстрого, стабильного и оригинального поиска. 3. Страница с результатами поиска открывается в новой вкладке, а конкретные страницы с результатами также открываются в новых вкладках, что не влияет на использование основной страницы. 4. По умолчанию производится поиск только по простым китайским веб-страницам, что позволяет избежать необходимости использования "инструмента продвинутого поиска" для отбора локализованных веб-страниц.

Установочный код

javascript: (function(BOM){
    function Random_SN(a) {
        return Math.floor(Math.random() * a.length)
    }
    function Probability_Random(a) {
        var b;
        void 0 === a.Random_SN && (a.Random_SN = -1);
        do b = Random_SN(a);
            while (b == a.Random_SN);
        return a.Random_SN = b,
            a[b]
    }
    function Sequence_Random(a) {
        return a.splice(Random_SN(a),
            1)[0]
    }
    Array.prototype.random = Array.prototype.random || function(a, b) {
        return a ? b ? Sequence_Random(this) : (this.Random_Queue && this.Random_Queue.length || (this.Random_Queue = [].concat(this)), Sequence_Random(this.Random_Queue)) : Probability_Random(this)
    };
    String.prototype.trim = String.prototype.trim || function() {
        return this.replace(/(^\s*)|(\s*$)/g, "")
    };
    BOM.getAllFrames = BOM.getAllFrames || function() {
        var c, d, a = [], b = this.frames;
        for (c = 0, d = 0; c < b.length; c++) 
            a[d++] = b[c], 
                b[c].frames.length && (a = a.concat(arguments.callee.call(b[c])));
        return a
    };
    BOM
})();
``````javascript
eachFrame = BOM.eachFrame || function() {
    var c, b, a = [this].concat(BOM.getAllFrames.call(this));
    for (b = 0; b < a.length; b++) {
        try {
            if (c = arguments[0].call(a[b], a[b].document),
                c === false) {
                break;
            }
            if (typeof c !== 'undefined') {
                return c;
            }
        } catch (d) {}
    }
};
BOM.getSelectedText = BOM.getSelectedText || function() {
    return BOM.eachFrame.call(this, function(_DOM_) {
        var This_Tag = _DOM_.activeElement;
        if (_DOM_.selection) {
            return _DOM_.selection.createRange().text;
        }
        switch (This_Tag.tagName.toLowerCase()) {
            case "input":
            case "textarea":
                with(This_Tag) {
                    return value.slice(selectionStart, selectionEnd);
                }
            default:
                return _DOM_.getSelection().toString();
        }
    });
});
})(top), function(a, b, c) {
    var d = a.getSelectedText().trim();
    return d ? a.open(["http://", c.random(true), "/search?newwindow=1&lr=lang_", b, "&q=", a.encodeURIComponent(d)].join(""), "_blank") : a.confirm(["Вы не выбрали ни одного слова на странице... ", "«OK» перейдет в раздел обратной связи; «Отмена» завершит работу этого инструмента."]).showModal());
})();
```"].join("\n\n\n")) ? (a.prompt("Введите информацию о 'рабочей среде' в поле, нажмите 'ОК' для перехода на страницу автора ~", navigator.userAgent), a.open("http://www.fyscu.com/", "_blank")) : a.alert("【Google Китайский контекстный поиск v1.3】\n\n(C)2013-2016 Синьцзян Уйгурский автономный район · Флай Инжиниринг Клуб · Разработка");
``````javascript
})(top, "ru-RU", ["sssis.com", "www.90r.org", "booo.so", "g.ttlsa.com", "lamjoeone.info", "g.net.co", "iguge.tk", "jiong.lu", "xie.lu", "ggncr.com", "everthis.com", "ppx.pw", "gugesou.com", "soso.red", "521.pt", "google.sqzr.cc", "yue.pao.im", "da.pao.im", "g.xjliao.me", "gg.eeload.com", "repigu.com", "jinke.la", "glgoo.com", "googleforchina.com", "74.125.12.198", "209.116.186.219", "173.194.121.28", "g.hi18.cn"]);
## [Google Поиск внутри сайта] v1.4
**Публикация статьи** —— http://log.fyscu.com/index.php/archives/211/
### Основные характеристики
1. При клике на кнопку в закладках будет использоваться **Google** для **поиска внутри сайта**
2. Автоматически выбирается случайный лучший Google сервер за границей, что позволяет **пользователям получать быстрый, стабильный и оригинальный опыт поиска без использования прокси**
3. Результаты поиска открываются в новой вкладке, а конкретные результаты открыты в новых вкладках, что не влияет на использование основной веб-страницы
4. При повторном нажатии можно вернуться к поиску родительского домена
### Установка кода
```javascript
javascript:(function(BOM){function Random_SN(a){return Math.floor(Math.random()*a.length)}function Probability_Random(a){var b,void 0===a.Random_SN&&(a.Random_SN=-1);do b=Random_SN(a);while(b==a.Random_SN);return a.Random_SN=b,a[b]}function Sequence_Random(a){return a.splice(Random_SN(a),1)[0]}Array.prototype.random=Array.prototype.random||function(a,b){return a?b?Sequence_Random(this):(this.Random_Queue&&this.Random_Queue.length||(this.Random_Queue=[].concat(this)),Sequence_Random(this.Random_Queue)):Probability_Random(this)},String.prototype.trim=String.prototype.trim||function(){return this.replace(/(^\\s*)|(\\s*$)/g,"")},BOM.getAllFrames=BOM.getAllFrames||function(){var c,d,a=[],b=this.frames;c=0;d=0;c<b.length;
```## 【Обратный переход по URL】v0.1
### Опубликовано
— [http://bbs.fyscu.com/forum.php?mod=viewthread&tid=4685]
### Основные характеристики
1. Каждый раз при использовании этого инструмента браузер будет **переходить по пути текущего URL к более раннему сетевому ресурсу**
2. Некоторые новые сайты используют **перезапись URL** или **контроль маршрута**, что может привести к тому, что два соседних уровня URL будут указывать на один и тот же ресурс, и после обратного перехода вы снова окажетесь на том же URL...
3. Некоторые браузеры могут не позволять нормально выполнить обратный переход, когда страница недоступна (**страница не может быть отображена**) — потому что в адресной строке вместо оригинального URL будет отображен URL внутренней ошибки браузера~
### Установка кода
```javascript
javascript:(function(a){
    var c,d,b=a.location.href.split("/");
    if(!b[0].match(/^(http|https|file|ftp):$/))
        return alert("Текущий URL не указывает на действительный сетевой ресурс, невозможно выполнить обратный переход...")||!1;
    if(c=b.length,""===b[c-1]){
        b.pop();
        c--;
    }
    if(c>3)b.splice(-1,1);
    else{
        if("www."===b[2].slice(0,4))
            return alert("Текущий URL уже находится на вершине сайта, дальнейший переход невозможен~");
        d=b[2];
})
``````разделить(".  "),d. splice(0,1),d. length<3&&d. splice(0,0,"www"),b[2]=d. join(".  ")}a. location. href=b. join("/"))(top);
## веб-код встроенныйv0. 2
### Основные характеристики
1. Поддерживает **текстовые водяные знаки для изображений**, что удобно для **публикаций на форумах**, **редактирования статей в WeChat пабликах** (при использовании следующего инструмента для вставки HTML-кода)
2. Если на странице много больших изображений, время компиляции может увеличиться
3. В более старых версиях браузера могут возникнуть больше **встроенных стилей**
### Установка кода
javascript: (function(a,b){function c(a){return JSON. parse(JSON. stringify(a. ownerDocument. defaultView. getComputedStyle(a)))}function f(a){var f,b=e. contentWindow. document;return d[a]||(f=b. createElement(a),b. body. appendChild(f),d[a]=c(f),b. body. removeChild(f)),d[a]}function g(){var e,a={},b=c(arguments[0]),d=f(arguments[0]. tagName. toLowerCase());for(e in b)! isNaN(Number(e))||e. match(/^(\w+)/)||b[e]==d[e]||e. match(/width|height/i)||(a[e]=b[e]);return a}var d={},e=b. createElement("iframe");e. style. display="none",b. body. appendChild(e),a. CSS_Inline=function(){var b,a=g(arguments[0]);for(b in a)arguments[0]. style[b]=a[b]},a. Image_Inline=function(a,c){var f,d=new Image,e=b. createElement("canvas");d. crossOrigin="",f=e. getContext("2d"),d. onload=function(){e. width=d. width,e. height=d. height,f. drawImage(d,0,0),c&&(f. font="20px sans-serif",f. fillStyle="white",f. fillText(c,10,d. height-15)),a. src=e. toDataURL("image/png"),d=null},d. src=a. src},a. Web_Inline=function(){var b,a=arguments[0]. querySelectorAll("*");for(b=0;b<a. length;b++)switch(a[b]. tagName. toLowerCase()){case"meta":case"style":case"script":case"iframe":a[b]. parentNode. removeChild(a[b]);break;case"img":this. Image_Inline(a[b],arguments[1]);break;default:this. CSS_Inline(a[b])}return arguments[0]. innerHTML. trim()},a. Web_Inline(b. body,a. prompt("текст для водяного знака изображения:")),a. setTimeout(function(){b. 
``````markdown
<body>.textContent = b.body.innerHTML, a.alert("Пожалуйста, выделите все отображаемое содержимое и скопируйте его!")}</code>, 1e3)}</code>)(self, self.document);

## инструмент вставки HTML-кода в редактор富文本编辑框 HTML 代码注入工具v0.4
**发布博文** —— <http://my.oschina.net/TechQuery/blog/350954>
### 主要特性
1. 在没有 **HTML 代码编辑模式** 的富文本编辑器中点击一下然后点击此工具的启动按钮就可以将 **自定义的 HTML 代码** 构建的 **网页片段** 插入进去
2. **自动检测当前焦点** 在编辑中的富文本编辑框兼容 `<textarea />``<iframe />``<div />` 等可编辑容器)。
   3. 如果用户跳过了输入代码则无需再次点击该工具只需在适当的位置插入代码即可。(此功能不适用于目标不同的情况或页面刷新的情况)。
   4. 如果网站使用了 **富文本编辑器** 或服务器端程序过滤了一些 HTML 标签则此工具将无法使用……
```### Установка кода
```javascript
javascript: (function(a) { var b = !!a.document.attachEvent, c = {"text": "text/plain", "url": "text/unicode", "html": "text/html"}, d = b ? ["attachEvent", "onpaste", "detachEvent"] : ["addEventListener", "paste", "removeEventListener"]; a.getPaste = a.getPaste || function(a, e) { var f = this; a = b ? a : c[a.toLowerCase()]; f.document[d[a ? 0 : 2]](d[1], function() { var c = arguments[0] || f; !1 === e.call(c.target || c.event.srcElement, c.clipboardData.getData(a)) && (b ? c.event.returnValue = !1 : c.preventDefault()); }, !1); }; a.getAllFrames = a.getAllFrames || function() { var c, d, a = [], b = this.frames; for (c = 0, d = 0; c < b.length; c++) a[d++] = b[c]; b[c].frames.length && (a = a.concat(arguments.callee.call(b[c]))); return a; }; a.eachFrame = a.eachFrame || function() { var d, c, b = [this].concat(a.getAllFrames.call(this)); for (c = 0; c < b.length; c++) try { if (d = arguments[0].call(b[c], b[c].document), d === !1) break; if (void 0 !== d) return d; } catch (e) {}; }; a.HTML_Inject = a.HTML_Inject || function(b) { var c = a.eachFrame(function(a) { var b = a.activeElement; if (!b) return !1; switch (b.tagName.toLowerCase()) { case "body": case "input": case "select": return; case "iframe": if (b.contentWindow.frames.length) return; b = b.contentWindow.document.body; } return b; }); return c ? (c.innerHTML = b || a.prompt("Введите HTML-код для вставки"), c.innerHTML || (c.iWatch || (a.getPaste.call(c.ownerDocument.defaultView, "Text", function(a) { return c.innerHTML = a, !1; }), c.iWatch = !0))) : void 0 : a.alert("Нет подходящей точки для вставки...\n\nПожалуйста, щелкните мышью в области редактирования, где вы хотите вставить код, затем снова нажмите на этот инструмент~"); })(self);

[CSS правила использования на странице] v0.1

Опубликовать статью —— http://log.fyscu.com/index.php/archives/125/

Основные характеристики

  1. Сканирование всех встроенных/внешних CSS на текущей странице и отображение в консоли, какие правила в каждом CSS-файле не используются на данной странице и какую долю они составляют

2.Внешние CSS будут показывать относительный путь файла. Встроенные CSS будут отображать соответствующие им HTML элементы, что поможет в определении местоположения элементов в дереве DOM, показанном в отладчике. 4. Правила CSS медиазапросов и шрифты будут иметь отдельные ветви в отображаемых объектах. 5. В данный момент не поддерживаются случаи, когда в CSS селекторах присутствуют псевдоклассы и псевдоэлементы, за исключением тех, которые находятся в конце цепочки селекторов (это основной источник неточностей при сравнении с профессиональными инструментами). 6. Кросс-доменные CSS файлы не могут быть сканированы (они обычно являются CDN общими библиотеками или хранятся на серверах со статическими файлами в среде развертывания в виде сжатых версий, которые не предназначены для отладки).### Установка кода

javascript: (function(a,b,c){function f(a){return a.match(/^\w+:\/\//)&&(a=a.split("/").slice(3),a.unshift(". "),a=a.join("/")),a}function g(a){var b,d;for(a=a.split(","),b=[],d=0;d<a.length;d++)c(a[d].trim().split(":")[0]).length||b.push(a[d]);return b}function h(a){var b,e,f,i,h;try{b=a.cssRules||a.rules}catch(c){}if(e=[],f={media:a.media.mediaText,mediaRules:[],fontsRules:[]},b){for(h=0;h<b.length;h++)switch(i=b[h],i.type){case 1:i=g(i.selectorText),i.length&&e.push(i);break;case 4:f.mediaRules.push(arguments.callee(i)[0]);break;case 5:f.fontsRules.push({fontFamily:i.style.fontFamily,src:i.style.src})}f.WasteRate=(100*(e.length/h)).toFixed(2)+"%"}return[f,e]}var j,i,k,d=b.styleSheets,e="(C)2014-2015 test_32@fyscu.com";if(!c)return a.alert("Пожалуйста, запустите этот инструмент в IE 8+ (стандартном режиме) или современном веб-браузере.\n\n"+e),!1;if(!console)return a.alert("Пожалуйста, запустите этот инструмент с открытым окном консоли JavaScript.\n\n"+e),!1;for(i=0,k=[];i<d.length;i++)k[i]=h(d[i]),j=k[i].shift(),j.href=d[i].href,j.WasteRate&&j.href&&(j.href=f(j.href)),j.element=d[i].ownerNode,console.log(j);console.log(k)})(self,self.document,self.document.querySelectorAll);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/Tech_Query-iBookmarkLet.git
git@api.gitlife.ru:oschina-mirror/Tech_Query-iBookmarkLet.git
oschina-mirror
Tech_Query-iBookmarkLet
Tech_Query-iBookmarkLet
master