是否可以检查是否包含任何版本的脚本?
Is it possible to check whether a script of any version has been included?
今天早些时候,我为 greasemonkey
编写了一个小脚本,它修复了 Whosebug Chat 中有时有问题的自动滚动。
我做了 // @require jquery.........
但是这导致了一些问题,因为聊天已经在较低版本中使用 jQuery 与较新版本不兼容,因为一些功能已被弃用或有已删除。
// ==UserScript==
// @name WhosebugChat
// @namespace deW1.net
// @include http://chat.whosebug.com/rooms/*
// @require http://code.jquery.com/jquery-1.11.3.min.js"
// @version 1
// @grant none
// ==/UserScript==
$( document ).ready( function( )
{
setInterval( function( )
{
$( "html , body" ).animate(
{
scrollTop: $( document ).height( )
} );
} , 5000 );
} );
现在的问题是,我能否以某种方式检查 jQuery 是否已包含在任何版本的网页中,以便我不再 @require
它。
这主要是适用于许多不同网站的脚本,而我不知道哪个是 运行 哪个 jQuery 版本。
(我以jQuery为例,基本上任何库都可以)
你不能检查 jQuery
是否存在吗?
if ( typeof jQuery !== 'function') {
// load jQuery
}
// do other stuff here
这仅适用于 AMD 架构。
在没有任何依赖注入系统的页面中包含库的情况下,无法以优雅的方式检查这种情况。
但是您可以创建一个算法来检查所有包含的脚本。它可以通过使用任何类型的方法(如 regexp 或 data-attr 插入脚本标签)来完成此操作。
今天早些时候,我为 greasemonkey
编写了一个小脚本,它修复了 Whosebug Chat 中有时有问题的自动滚动。
我做了 // @require jquery.........
但是这导致了一些问题,因为聊天已经在较低版本中使用 jQuery 与较新版本不兼容,因为一些功能已被弃用或有已删除。
// ==UserScript==
// @name WhosebugChat
// @namespace deW1.net
// @include http://chat.whosebug.com/rooms/*
// @require http://code.jquery.com/jquery-1.11.3.min.js"
// @version 1
// @grant none
// ==/UserScript==
$( document ).ready( function( )
{
setInterval( function( )
{
$( "html , body" ).animate(
{
scrollTop: $( document ).height( )
} );
} , 5000 );
} );
现在的问题是,我能否以某种方式检查 jQuery 是否已包含在任何版本的网页中,以便我不再 @require
它。
这主要是适用于许多不同网站的脚本,而我不知道哪个是 运行 哪个 jQuery 版本。
(我以jQuery为例,基本上任何库都可以)
你不能检查 jQuery
是否存在吗?
if ( typeof jQuery !== 'function') {
// load jQuery
}
// do other stuff here
这仅适用于 AMD 架构。
在没有任何依赖注入系统的页面中包含库的情况下,无法以优雅的方式检查这种情况。
但是您可以创建一个算法来检查所有包含的脚本。它可以通过使用任何类型的方法(如 regexp 或 data-attr 插入脚本标签)来完成此操作。