Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Tab Scroll JS
- function tabScroll(event) {
- const target = event.target;
- if (target.classList.contains('title')) {
- const par = target.parentNode;
- if (par.classList.contains('tab-header') && target.hasAttribute('id')) {
- const id = target.getAttribute('id');
- if (id === 'scrollTop') {
- chrome.tabs.executeScript({code:'function pos(){var position=window.pageYOffset;window.scrollTo(0,0);return position;};pos();'}, msg);
- target.id = 'scrollPre';
- }
- if (id === 'scrollPre') {
- chrome.tabs.executeScript({code:'chrome.storage.local.get({"offset":""},function(local){var offset=local.offset;window.scrollTo(0,offset);});'});
- target.id = 'scrollTop';
- }
- }
- if (par.classList.contains('tab-header') && !target.hasAttribute('id')) {
- rmID();
- target.id = 'scrollTop';
- }
- }
- };
- function msg(position) {
- var offset = position[0];
- chrome.storage.local.set({'offset': offset});
- };
- function rmID() {
- const top = document.getElementById('scrollTop');
- const pre = document.getElementById('scrollPre');
- if (top) {
- top.removeAttribute('id');
- }
- if (pre) {
- pre.removeAttribute('id');
- }
- };
- // Toggle JS
- function extensionToggle() {
- // Add extension IDs of buttons. On each click of the toggle another set of buttons is being shown. You can leave any one of these empty. In this example no extensions are being shown on start, 3 extensions are being shown in set2 and 3 in set3. Extension that are installed and enabled but not entered will be hidden from all sets.
- // Hidden extensions (Keep it blank)
- var set1 =
- [
- ];
- // Always shown ?
- var set2 =
- [
- 'hkhcjamebchhnoddfipklniglomopkcm', //ScriptJager
- 'emdjionoeijnepnlidmpilichaijlmoe', //FlashVideoDownloaderUnpacked
- 'gabbbocakeomblphkmmnoamkioajlkfo', //NanoAdBlocker
- 'imkngaibigegepnlckfcbecjoilcjbhf', //StreamVideoDownload
- 'fhcgjolkccmbidfldomjliifgaodjagh' //CookieAutodelete
- ];
- // Show on toggle
- var set3 =
- [
- 'fbbmnbomimdgmecfpbilhoafgmmeagef', //PageZipper
- 'hmdcmlfkchdmnmnmheododdhjedfccka', //EyeDropper
- 'ekajjllcmeckibblgckgoceinmmgnfop', //FloatingPlayer
- 'ljnpgplmnnnbebdgjnbejbcamhdflibm', //ForceBackgroundTabs
- 'lmeddoobegbaiopohmpmmobpnpjifpii', //OpenInFirefox
- 'dmpojjilddefgnhiicjcmhbkjgbbclob' //YoutubeDownloader
- ];
- // create the button
- var button = document.createElement('button');
- button.classList.add('button-toolbar', 'toggle-extensions-group');
- button.id = 'togglemod';
- button.setAttribute('title', 'Toggle mod');
- button.setAttribute('tabindex', '-1');
- button.innerHTML = '<svg width="4" height="16" viewBox="0 0 4 16" xmlns="http://www.w3.org/2000/svg"><path d="M2 4c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zm0 6c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2zm0 6c1.105 0 2-.895 2-2s-.895-2-2-2-2 .895-2 2 .895 2 2 2z"></path></svg>';
- adr.appendChild(button);
- // startup setting
- const startup = document.querySelectorAll('button.button-toolbar.browserAction-button');
- const togstat = document.getElementById('togglemod');
- togstat.classList.add('SET1');
- for (var i=0; i < startup.length; i++) {
- if (set1.indexOf(startup[i].id) != -1) {
- startup[i].style.display = 'flex';
- }
- else {
- startup[i].style.display = 'none';
- }
- }
- // toggle logic
- togstat.addEventListener('click', function() {
- const buttons = document.querySelectorAll('button.button-toolbar.browserAction-button');
- if (togstat.classList.contains('SET1')) {
- togstat.classList.remove('SET1');
- togstat.classList.add('SET2');
- }
- else if (togstat.classList.contains('SET2')) {
- togstat.classList.remove('SET2');
- togstat.classList.add('SET3');
- }
- else {
- togstat.classList.remove('SET3');
- togstat.classList.add('SET1');
- }
- for (var i=0; i < buttons.length; i++) {
- if (togstat.classList.contains('SET1') && set1.indexOf(buttons[i].id) != -1) {
- buttons[i].style.display = 'flex';
- }
- else if (togstat.classList.contains('SET2') && set2.indexOf(buttons[i].id) != -1) {
- buttons[i].style.display = 'flex';
- }
- else if (togstat.classList.contains('SET3') && set3.indexOf(buttons[i].id) != -1) {
- buttons[i].style.display = 'flex';
- }
- else {
- buttons[i].style.display = 'none';
- }
- }
- });
- };
- // Below code is a loop waiting for the browser to load the UI. Something like it has to be used in all similar javascript mods to ensure the interface has loaded before running dependent functions. You can call all functions you might use from just one instance.
- let adr = {};
- setTimeout(function wait() {
- adr = document.querySelector('.toolbar-addressbar.toolbar');
- if (adr) {
- extensionToggle();
- document.body.addEventListener('click', tabScroll);
- }
- else {
- setTimeout(wait, 300);
- }
- }, 300);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement