当年笨蛋写的文字。

% !TeX encoding = UTF-8
% !TeX program = xelatex
% !TeX spellcheck = en_US


\documentclass[fontset=founder, a4paper]{ctexart}
\usepackage{amsmath, amssymb, amsthm}
\usepackage{enumerate}
\usepackage{listings}
\usepackage[backref, colorlinks]{hyperref}% colorful links instead of ugly boxes

\hypersetup{
  urlcolor    = blue, % color for external hyperlinks
  linkcolor   = blue, % color for internal links
  citecolor   = red,  % color for citations
}%

\providecommand{\abs}[1]{\lvert#1\rvert}
\providecommand{\norm}[1]{\lVert#1\rVert}


\begin{document}
\title{解除网页文字复制限制}
\author{李钦远}
\maketitle

\subsection*{为什么网页可以阻止复制文字?}

这里用到的是网页的一个特性:\texttt{JavaScript}
\texttt{JavaScript}是一种编程语言,可以辅助网页的显示,并且用于实现动态页面的效果。
程序通过JavaScript语言修改了普通的右键菜单的功能,阻止了文字的复制。

当然,还有其他的技术可以阻止文字复制。比如通过透明的图片覆盖在文字上,或者直接以图片格式显示出文字。
这些情况下有对应的其他处理方式。

\subsection*{如何解除复制文字限制?}

\subsubsection*{禁用\texttt{JavaScript}}

\paragraph*{好处}
\begin{itemize}
  \item 很多浏览器都支持直接禁用\texttt{JavaScript}\end{itemize}

\paragraph*{缺陷}
\begin{itemize}
  \item 网页上的动态要素都无法实现,有的网页可能根本加载不出基本的文字,导致文档复制限制虽然被解除了,但是文档自身也加载不出了。
\end{itemize}

\paragraph*{兼容性}百度文库可以通过该方法复制文字,但是存在文档加载不全的现象。

\paragraph*{操作}搜索对应的浏览器``如何禁用\texttt{JavaScript}''

\subsubsection*{禁用\texttt{DOM}\texttt{contextmenu}事件}

\paragraph*{好处}
\begin{itemize}
  \item \texttt{JavaScript}语言通过修改对\texttt{contextmenu}(上下文菜单,也就是右键菜单)\texttt{DOM}事件的响应,
使得右键菜单的功能由默认的弹出菜单,变成了网页自己的显示复制限制。因此,直接不允许网页修改点击右键的行为,
可以使得原本的菜单得以显示,从而进一步进行文本的复制。
\end{itemize}

\paragraph*{缺陷}
\begin{itemize}
  \item 并非所有浏览器都有能力单独禁用这一项\texttt{JavaScript DOM}事件。
  \item 有的百度文档通过该方法复制得到的文字排版上存在很大问题。
\end{itemize}

\paragraph*{兼容性}当浏览器为Firefox时,百度文库可以通过该方法复制文字,但是某些文档复制后存在排版错乱的问题。

\paragraph*{操作}
\begin{enumerate}
  \item 在Firefox地址栏中输入\texttt{about:config},回车或点击``转到''。
  \item 阅读并点击确认风险提示。
  \item 在上方的搜索条内输入\texttt{dom.event.contextmenu.enabled}并等待自动搜索进行。
  默认情况下会搜索到两个条目,需要对名称完全匹配的条目进行修改。
  \item 点击条目右方的切换按钮,将该条目的值由默认值\texttt{true}修改为\texttt{false}  \item 这样,所有网页的右键菜单都会被重置为系统默认的右键菜单。很多网页文字复制限制将会被解除。
\end{enumerate}

\subsubsection*{通过脚本解除复制限制}

\paragraph*{好处}
\begin{itemize}
  \item 网站通过\texttt{JavaScript}实现文字复制限制,同样也可以通过附加脚本利用\texttt{JavaScript}来解除该限制。
\end{itemize}

\paragraph*{缺陷}
\begin{itemize}
  \item 从网络中下载并执行不可信的脚本存在安全风险。
  \item 需要高级的浏览器(Firefox,Chrome)配合特定的扩展程序(比如\href{https://violentmonkey.github.io/}{这个}),
  安装并执行脚本才可以达到目的。
\end{itemize}

\paragraph*{操作}可以参考\href{https://greasyfork.org/en/scripts/28497-remove-web-limits-modified}{这个}脚本。

\end{document}