Webページの「コピペ禁止」を解除・回避する

 

そしてjavascriptでコピーが禁止されたサイトでクリックすると大抵のサイトでコピーできるようになる。(そのサイトのペーストまでは解除していない)

以下解説。

続きを読む “Webページの「コピペ禁止」を解除・回避する”

javascriptでDOM変更を検知する

addEventListner(‘DOMchange’)でもあるのかと思っていたらそうでもないようで。

読み込んでからjavascriptでがっつり書き換えるサイトに対応するため研究してみた。

特徴はsubtreeを指定して、末端の要素の変更も検出できるようにしたこと。

MutationObserverについて例が少ないので、どなたかの助けになればと。

続きを読む “javascriptでDOM変更を検知する”

Firefox75でlazy loading support

今日になりFirefoxでアップデートが掛かり、再起動後 Lazy load が掛かっていることに気が付いた。

Lazy load でhtmlが崩れる

無駄な通信を減らす意味では大いに賛成だが、まとめサイトなど飛ばし読みするときに画像が遅れて出てくる。そして画像に押し出される形で読んでいる位置がどんどん下がっていく。

単純に loading=”lazy” 追加するだけでなく、width Height も指定しておいてほしい。

とにかく読みづらいので、lazy load をキャンセルさせてもらう。

サイトごとにlazy loadをブロック

要点だけを示すと、imgタグの属性 loading =lazy をeagerに変えてしまえばよい。

window.addEventListener(‘scroll’, function(e) {
console.log(“startup”);
var imgObj = Object.values(Array.from(document.body.querySelectorAll(‘img’)).reduce(function(pre, curr) {
if (!pre[curr.src]) pre[curr.src] = curr;
return pre;
}, {}));
for (var i = 0, len = imgObj.length; i < len; ++i) {
imgObj[i].setAttribute(“loading”, “eger”);
}
}, false);

イベントリスナは本来scrollではなくDOMContentLoadedが正しい。但し、うまく動作しないサイトが多かったため、scrollを採用した。

お陰で割込みが起こりまくるのでサイトのパフォーマンスが下がる可能性がある。

tampermonkey用のスクリプトを下記に記す

// ==UserScript==
// @name         RemoveLoadingLazy
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Remove lazy of loading attribute of <img> tag
// @author       You
// @match        https://*/*
// @match        http://*/*
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  window.addEventListener('scroll', function(e) {
    console.log("startup");
    var imgObj = Object.values(Array.from(document.body.querySelectorAll('img')).reduce(function(pre, curr) {
      if (!pre[curr.src]) pre[curr.src] = curr;
      return pre;
    }, {}));
    for (var i = 0, len = imgObj.length; i < len; ++i) {
      imgObj[i].setAttribute("loading", "eager");
    }
  }, false);


})();

このスクリプトはとりあえず全てのサイトに適応されている。パフォーマンスの低下するなら、tqmpermonkeyのアイコンをクリックして除外を設定してほしい。

続きを読む “Firefox75でlazy loading support”

JavaScriptでシフトキーが離されたことを知る

eventでkeyup でShiftKeyが上がったことを検出できない。

document.addEventListener('keyup', function (e) {
    console.log("keyup で e.shiftKeyが検出できない "+e.shiftKey);
  }, false);
document.addEventListener('keydown', function (e) {
    console.log("keyup で e.shiftKeyが検出できる "+e.shiftKey);
  }, false);

考えてみればKeyUpされたときには既にShiftKeyが離れているからかと勝手に納得してみたが、やっぱり理解できない。

だがなんとかして知りたい。

  document.addEventListener('keyup', function (e) {
    console.log(e.key == "Shift");
  }, false);

edgeとchormeとFirefoxで確認した。一応動作する形。

続きを読む “JavaScriptでシフトキーが離されたことを知る”

Retinaディスプレイの判別だけではないWindow.devicePixelRatio

MDNでもRetinaディスプレイの判別に使っていますが、本来この関数はCSS上の1pxが物理ピクセルいくつで表示されているかという値です。

value = window.devicePixelRatio;

つまり、ブラウザの拡大縮小でもこの値が変わってきます。しかもChorme等ブラウザによっては「0.8999999761581421」なんていう値が返ってきたりします。

良く例文で返り値が1はPC、2はRetina、3はiPhoneとか書いてありますが整数だけで判断すると良くない結果になりますのでご注意を。

よそのサイトに画像虫眼鏡機能を足したい

虫眼鏡機能を足すというより、アクセスコントロールの効いたhttpsコンテンツにJavaScriptライブラリを力ずくで埋め込む方法です。

色々なJavascriptがありますが、okzoom.jsにしました。

後からJavaScriptを読ませればいい。

var req = new XMLHttpRequest();
req.open("GET", "https:////okzoom.min.js", false); // async=false レスポンスを待って実行させる。
req.send(""); //  openはasyncが待つのはsend。意味は無いが消すとモーダルとなる。
 eval(req.responseText);

 

そうは問屋が卸しません

(Reason: CORS header ‘Access-Control-Allow-Origin’ missing)

opneの所で。要するにセキュリテイ上よそのJavaxcriptは受け付けませんよ。という事です。

それでも無理やり読ませたい

JavaScriptではヒアドキュメントが正式では使えないので、改行しないように編集します。その時点で著作権やクレジットが消えてしまうのでコピペ例文としては出せません。

var zoomingjs= '$(function(a){var b=function(c){c=c.t..................................uto"}});';

eval(zoomingjs);

 

Javascript内に忍び込ませることで何とか読んでもらえました。

もちろんeval内に直接書いても構いません。