无法将jQuery转换为用户脚本的纯Javascript

无法将jQuery转换为用户脚本的纯Javascript,javascript,jquery,userscripts,Javascript,Jquery,Userscripts,好的,这里是交易:我正在尝试创建一个用户脚本,用于Greasemonkey/Chrome/任何其他人们用来管理这些东西的东西。我想做的部分工作是为我为这个特定脚本设计的图标创建标签。我至少大致了解了如何在Jquery中实现这一点。我会使用以下代码: $('li.tab.iconic').each(function (i) { var spanName = $('this').attr(id); var toRemove = '_button'; var spanNameC

好的,这里是交易:我正在尝试创建一个用户脚本,用于Greasemonkey/Chrome/任何其他人们用来管理这些东西的东西。我想做的部分工作是为我为这个特定脚本设计的图标创建标签。我至少大致了解了如何在Jquery中实现这一点。我会使用以下代码:

$('li.tab.iconic').each(function (i) {
    var spanName = $('this').attr(id);
    var toRemove = '_button';
    var spanNameCrop = spanName.replace(toRemove,'');
    $('this').append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});

将jquery脚本添加到document.ready函数中

$(document).ready(function(){
$('li.tab.iconic').each(function (i) {
    var spanName = $('this').attr('id');
    var toRemove = '_button';
    var spanNameCrop = name.replace(toRemove,'');
    $(this).append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});
})
$(文档).ready(函数(){
$('li.tab.icogal')。每个(函数(i){
var spanName=$('this').attr('id');
var toRemove=“_按钮”;
var spanNameCrop=name.replace(删除“”);
$(this.append(“”+spanNameCrop+“”);
});
})
现在,当抓取页面上的所有资源时,代码将执行

您可以在此处阅读更多内容:

在document.ready函数中添加jquery脚本

$(document).ready(function(){
$('li.tab.iconic').each(function (i) {
    var spanName = $('this').attr('id');
    var toRemove = '_button';
    var spanNameCrop = name.replace(toRemove,'');
    $(this).append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});
})
$(文档).ready(函数(){
$('li.tab.icogal')。每个(函数(i){
var spanName=$('this').attr('id');
var toRemove=“_按钮”;
var spanNameCrop=name.replace(删除“”);
$(this.append(“”+spanNameCrop+“”);
});
})
现在,当抓取页面上的所有资源时,代码将执行

您可以在此处阅读更多内容:

您不想使用
“this”
您想使用
this
如果id不是一个带值的变量字符串,您希望它是一个字符串:

$('li.tab.iconic').each(function (i) {
    var spanName = $(this).attr('id');
    var toRemove = '_button';
    var spanNameCrop = spanName.replace(toRemove,'');
    $('this').append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});

您不想使用
“this”
您想使用
this
如果id不是带值的变量字符串,您希望它是字符串:

$('li.tab.iconic').each(function (i) {
    var spanName = $(this).attr('id');
    var toRemove = '_button';
    var spanNameCrop = spanName.replace(toRemove,'');
    $('this').append('<span class="tooltip_label">'+spanNameCrop+'</span>');
});

如果您的Greasemonkey脚本用于使用jQuery的站点,那么您可以在脚本中使用它。使用此代码:

var jQuery, $ = null;

function addJQuery(callback) {
    var p = null;

    if(window.opera || window.navigator.vendor.match(/Google/)) {
        var div = document.createElement("div");
        div.setAttribute("onclick", "return window;");
        p = div.onclick();
    }
    else {
        p = unsafeWindow;
    }

    jQuery = $ = p.jQuery.noConflict();
    callback();
}
回调是Greasemonkey脚本中的一个函数。完成此操作后,您可以将jQueryjQuery$一起使用,就像它是一个普通的网页JavaScript一样

这种方法的好处是,它不仅适用于Firefox,也适用于Chrome和Opera。它也不会加载新的jQuery脚本,而是重用网页中的脚本

示例:

var myFunction = function() {
    // Your code here
};

addJQuery(myFunction);

编辑:
有一种方法可以通过在脚本元数据块中使用@include@match来限制脚本。

您可以在GM Wiki上阅读更多关于它的信息-

如果您的Greasemonkey脚本用于使用jQuery的站点,那么您可以在脚本中使用它。使用此代码:

var jQuery, $ = null;

function addJQuery(callback) {
    var p = null;

    if(window.opera || window.navigator.vendor.match(/Google/)) {
        var div = document.createElement("div");
        div.setAttribute("onclick", "return window;");
        p = div.onclick();
    }
    else {
        p = unsafeWindow;
    }

    jQuery = $ = p.jQuery.noConflict();
    callback();
}
回调是Greasemonkey脚本中的一个函数。完成此操作后,您可以将jQueryjQuery$一起使用,就像它是一个普通的网页JavaScript一样

这种方法的好处是,它不仅适用于Firefox,也适用于Chrome和Opera。它也不会加载新的jQuery脚本,而是重用网页中的脚本

示例:

var myFunction = function() {
    // Your code here
};

addJQuery(myFunction);

编辑:
有一种方法可以通过在脚本元数据块中使用@include@match来限制脚本。


您可以在GM Wiki上阅读更多信息-

您不应该对
对象使用引号。将它们用于
id
属性
$(this.attr('id')我永远记不起我是否需要引用
这个
。修复。您不需要$(文档)。在greasemonkey脚本中准备就绪。当GM脚本执行开始时,文档已完全加载。您不应对此对象使用引号。将它们用于
id
属性
$(this.attr('id')我永远记不起我是否需要引用
这个
。修复。您不需要$(文档)。在greasemonkey脚本中准备就绪。当GM脚本开始执行时,文档已经被完全加载。我尝试将其包装在一个文档就绪函数中,但它杀死了我页面上的普通javascript,现在两者都不起作用。我已经编辑了我的主要帖子,以显示我正在使用的完整脚本。如果网站没有jQuery,那么您就不能使用document ready功能。我不确定你到底想要什么。Greasemonkey脚本是在DOMContentLoaded上执行的。这与documentready相同,因此不需要它。@voigtan正如我在问题中和我的原始帖子中所说的,我希望将jquery转换为纯javascript。该网站有jquery,但我不知道我的脚本何时加载,因此我无法保证它将在jquery包含在头部后插入/运行。我尝试将其包装在一个文档就绪函数中,但它杀死了我页面上的普通javascript,现在两者都不起作用。我已经编辑了我的主要帖子,以显示我正在使用的完整脚本。如果网站没有jQuery,那么您就不能使用document ready功能。我不确定你到底想要什么。Greasemonkey脚本是在DOMContentLoaded上执行的。这与documentready相同,因此不需要它。@voigtan正如我在问题中和我的原始帖子中所说的,我希望将jquery转换为纯javascript。该网站有jquery,但我不知道我的脚本何时加载,因此我无法保证它将在jquery包含在头部后插入/运行。尝试过这个,但没有乐趣。它还干扰了其他网站上的脚本,而不仅仅是我试图编辑的网站。有没有办法将其限制为仅在我试图编辑的站点上运行?我在几个脚本中使用过它,每次都有效。也许你做错了什么?检查我写的这个脚本。我也用同样的方法。这可能有用:这是我得到的。我使用@include将它的用法限制在tumblr上,我删掉了所有脚本以添加标签,这样我就可以测试脚本的最基本部分(更改背景)是否正常工作。没有骰子。我想我至少发现了部分问题——tumblr还使用了原型