Saturday 9 May 2015

如何在网页上 copy 字

有一些网站会禁止用户用右键 copy 字体。有些更甚的会禁止用滑鼠 highlight。

比如说这个网站, 用 Firefox 打开 (本文不教其它浏览器哟):



有时候会觉得被网站耍的感觉, 想直接右键 Google search 相关内容深入了解, 不能。给一大堆联络地址, URL, 要手抄不成 ?

如果有心人要 copy, 不会天真以为 TA 找不到方法 ? 这种措施非但阻止不了有心人用程序复制网页, 且只会为难一般用户。

通常我们想到的第一个解决方法是 disable javascript, 但是 disable liao 就不给进:



当然, 虽然 Ctrl+S 被禁止, 但是要 Save Page As 还是很容易的:


但是用滑鼠 navigate 不到,选不到字, 而且右键又没 menu 出来。

但是其实呢按 Shift+F10 键是能打开 menu 的哦(这个 shortcut key 是在 destkop, file explore...等等其它地方都能用的),  缺点只是无法选地方打开:



其实更好的打开的右键做法,是输入浏览 about:config 网址。


Enter 选 I'll be careful, I promise!, 就会看到很多个 listing, 在 Search 那里输入 context 关键字(如果没有自动搜索就按 Enter):


在 dom.event.contextmenu.enabled 那边, 双击那个 value 栏目的 true , 就会改成 false



就可以随时随地按右键了。


打开的右键,你可以选择 View Page SourceInspect Element 从那里 Copy 字体。但是麻烦罗, 又要看代码。

所以这里有懒人包做法,直接去选 View ->  Page Style -> No Style


然后就变成可以选了,缺点是 format 走位(其实我觉得更好看,字体深色而且宽)。当然这只是选 highlight, 要使用 Context Menu, 就跟着之前的讲解。


如果要维持 format 呢 ? 这里有一个终极的方法。

打开你平时用的 File Explorer, 然后 Ctrl+L 输入  %appdata%\Mozilla\Firefox


按 Enter, 就会来到这里:


然后选 Profiles -> 随机字.default folder, 来到:


你电脑还没有 chrome 这个 folder, 所以你要右键 New- > Folder 新建 chrome

进去那个 chrome folder, 里面是空的, 要新建一个 css 文件。

So, Win+R 键输入打开 notepad:


输入以下内容:

* { -moz-user-select: text !important;
* user-select: text !important; }

如图所示:

然后选 File -> Save As... 在刚才那个 Chrome 的 file path。

如果你背不上来那个 Chrome 的 path, 你可以 Ctrl+L 然后 Ctrl+C copy 那个 path, 然后在这里 Ctrl+L 然后 Ctrl+P paste 进来, Enter, 就能跳到那个 filepath 了。



这里 file name 要放 userContent.css , 然后 Save as typeAll Files

然后就搞掂 liao, 关掉所有 Firefox 然后开过。浏览这个网页, 用滑鼠 highlight 就变成通畅无阻了 :)



小白 Bonus:
除了用右键 copy, 你也可以highlight, 然后用滑鼠中间轮子 click 一下就 copy 了,要 paste 时就用滑鼠中间轮子 click 一下即可。至于 ctrl+c 被禁止我暂时想不到方便的解决方法。我不是 web developer 叻 :)

[2018 更新]:
以上的方法在佳礼中文网不能 works, 不过你可以制作自己的火狐扩展,  如:

xb@dnxb:~/firefox-enable-selection$ cat manifest.json
{
  "manifest_version": 2,
  "name": "firefox-enable-selection",
  "version": "1.0",

  "content_scripts": [
    {
      "matches": ["https://*cari.com.my/*"],
      "js": ["selection.js"]
    }
  ]
}


xb@dnxb:~/firefox-enable-selection$ cat selection.js
Array.from(document.querySelectorAll('div[onmousedown]')).forEach((element,index) =>
{
     element.onmousedown=function(){return true}
});
Array.from(document.querySelectorAll('div[onselectstart]')).forEach((element,index) =>
{
     element.onselectstart=function(){return true}


});
xb@dnxb:~/Downloads/misc/firefox-enable-selection$

因为佳礼的某些 div class 有 `<div class="d" onmousedown="return false;" onselectstart="return false;">` ,
此方法就是循环替代该 elemenets。

或者用我这个扩展

No comments:

Post a Comment