我可以在浏览器中禁用 JQuery 吗?

Can I disable JQuery in browsers?

正如标题所说,我可以在浏览器中禁用 JQuery 吗?

我为我的网站写了一个 JQuery 功能,我想如果任何用户像我们禁用 JS 一样禁用 JQuery,那么我应该怎么做。

我们在浏览器的设置中禁用了JavaScript,像这样,是否可以禁用JQuery?

我搜索了一段时间这个问题:

Disable Jquery in certain sections

是否可以从浏览器检查器控制台禁用 Javascript/Jquery?

但在第一个问题中,用户要求的是特定部分,而在第二个问题中,用户要求的是控制台。所以我找不到适合我的问题的答案。任何人都可以知道这是否可能。如果是,如何?

谢谢。

您可以通过禁用 JavaScript 在浏览器中禁用 jQuery。 jQuery 只是一个用 JavaScript 编写的库,而不是它自己的语言。

您不能禁用 just jQuery,同时在浏览器设置中允许其他 JavaScript。可以编写一个浏览器 extension/add-on 来做到这一点,但它不会很有用。

您在评论中说:

Actually I wrote a jquery function for my website and thought if some user disable the jquery like JS then what should I do for tha.

用户不会专门禁用 jQuery,但他们很可能会禁用 JavaScript。 (现在这种情况很少见,但人们仍然这样做。)如果您想告诉用户您的网站在启用 JavaScript 时运行得更好,请包含 noscript 内容:

<noscript>
Your message goes here
</noscript>

该内容只会向禁用 JavaScript 的用户显示(或在根本不支持 JavaScript 的浏览器中显示)。

JQuery 是 javascript。由于它不是一种特殊类型的语言,并且 JQuery 文件可以以任何名称附加在 HTML 文档中,因此无法禁用它。

但是禁用 Javascript 将禁用 JQuery。

您的问题是,

We disable the JavaScript from settings in our browser, like that, is it possible to disable the JQuery?

直接的答案是

首先,
您必须了解 Javascript 是一种用于网络的嵌入式脚本语言。

第二,
jQuery 只是一个库,它 不是 嵌入到浏览器中(它不是浏览器功能,你怎么能在浏览器中禁用它?)



此外禁用 jQuery(通过一些扩展,我不知道)会使几乎所有网站无用

如果您希望禁用 jQuery 具体 ,一种选择是在文档加载之前使 window.jQuerywindow.$ 不可写,可能带有用户脚本。例如,以下用户脚本在这个问题的页面上禁用 jQuery,这会导致 SO 的 Javascript 中出现许多脚本错误,但不会禁用其他不依赖 jQuery 的 Javascript ]:

// ==UserScript==
// @name         Break-jQuery
// @namespace    CertainPerformance
// @version      1
// @match        
// @run-at       document-start
// @grant        none
// ==/UserScript==

Object.defineProperty(window, 'jQuery', {
  value: undefined,
  writable: false
});
Object.defineProperty(window, '$', {
  value: undefined,
  writable: false
});

但没有太多理由这样做 - 最好要么完全禁用 Javascript,要么允许站点使用 jQuery,如果它愿意的话。

但是你必须以一种古怪的方式完成这个。

jQuery(document).ready(function() {
   jQuery = null;
   $ = null;  // or undefined or 
   // delete jQuery; delete $;
});

如果其他方法已经初始化,那么这将无济于事。但是进一步的方法实现将不起作用。

如果发生其他方法或函数或绑定,则必须在此之后开始。

$(document).on('click', function() {
  console.log("previous bind successfully working");
});

$(document).ready(function() {
  console.log('jquery enabled');
  delete jQuery;
  delete $;
  try {
    console.log($(document));
    console.log('jQuery', jQuery, $);
  } catch (e) {
    console.log(e, 'in catch block');
  }
  setTimeout(function() {
    try {
      $(document).on('click', function() {
        console.log("bind successfull with jquery");
      });
    } catch (e) {
      console.log(e, 'in catch block');
    }
  }, 100);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

如果您想在浏览器中执行此操作,如我所说,一旦 jquery 被初始化为功能,则很难解除绑定。如果以后有 jquery 的引用,如果 运行 在控制台中,它将无法使用上面的代码。