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

时间:2012-09-11 15:45:52

标签: javascript jquery userscripts

好的,所以这就是交易:我正在尝试创建一个用户脚本,以便在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>');
});

基本上,我想获取每个id的{​​{1}}属性,从中修剪短语“_button”,然后将剩余的文本插入到作为标签的范围中。我的问题是我搜索了高低,但没有找到关于如何在javascript中执行这样的循环的明确说明。它甚至可能吗?

或者,我正在构建的网站包括Jquery库。有没有办法告诉我的脚本在网站加载jquery后加载,以便jquery脚本可以工作?

编辑:感谢Avladov的工作。这是最后的剧本。

li

3 个答案:

答案 0 :(得分:2)

你不想使用'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>');
});

如果网站不使用jQuery,你可以使用jQuery包含jQuery:

if(!(window.jQuery && window.jQuery.fn.jquery == '1.8.1')) {var s = document.createElement('script');s.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js');s.setAttribute('type', 'text/javascript');document.getElementsByTagName('head')[0].appendChild(s);}

答案 1 :(得分:1)

如果您的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脚本中的一个功能。完成此操作后,您可以将 jQuery jQuery $ 一起使用,就像它是一个普通的网页JavaScript一样。

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

示例:

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

addJQuery(myFunction);


编辑:
有一种方法可以在脚本元数据块中使用 @include @match 来限制脚本。
您可以在GM Wiki上阅读更多相关信息 - http://wiki.greasespot.net/Metadata_Block

答案 2 :(得分:0)

在document.ready function

中添加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>');
});
})

现在,当抓取页面上的所有资源时,代码将会执行

您可以在这里阅读更多内容: http://api.jquery.com/ready/