首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >greasemonkey插入javascript

greasemonkey插入javascript
EN

Stack Overflow用户
提问于 2010-05-25 01:39:52
回答 2查看 4.5K关注 0票数 1

我有一个书签小程序,点击书签小程序包括一个PHP脚本(评估为JavaScript文件)到页面的几个表值,并选择作为GET参数传递的值。PHP脚本将页面数据写入MySQL数据库,并输出一条成功消息,该消息被视为JavaScript代码并由浏览器执行。有没有可能用greasemonkey来做这件事,并在点击网页上的现有按钮时调用这个函数。

受本教程的启发,我写了上面的书签。

http://tutorialzine.com/2010/04/simple-bookmarking-app-php-javascript-mysql/

这是bookmarklet代码:

代码语言:javascript
复制
(function () {
var jsScript = document.createElement('script');

jsScript.setAttribute('type', 'text/javascript');

jsScript.setAttribute('src', '/bookmark.php?url=' + encodeURIComponent(location.href) + '&title=' + encodeURIComponent(document.title));

document.getElementsByTagName('head')[0].appendChild(jsScript);
})();

请帮帮我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-25 17:42:28

我们经常这样做。这是一个适合您的脚本,只需编辑@include语句,使其与将要使用的页面相匹配即可。

此外,/bookmark.php可能必须更改为完整地址,而不是相对地址。

代码语言:javascript
复制
//
// ==UserScript==
// @name            Adding a live button
// @namespace       http://www.google.com/
// @description     Adds a custom bookmarking button.
// @include         http://www.google.com/*
// ==/UserScript==
//


function LocalMain ()
{

    /*--- Create a button in a container div.  It will be styled and postioned with CSS.
    */
    var zNode       = document.createElement ('div');
    zNode.innerHTML = '<form id="idMyForm" method="get" action="">'
                    + '  <p><input type="submit" id="idMySubmitBtn" value="Bookmark it"></p>'
                    + '</form>'
                    ;
    zNode.setAttribute ('id', 'idBookMarkBtnContainer');

    document.body.appendChild (zNode);

    zNode.addEventListener ("submit", BookmarkButtonAction,   false);
}


function BookmarkButtonAction (zEvent)
{
    zEvent.preventDefault();

    var jsScript    = document.createElement('script');

    jsScript.setAttribute('type', 'text/javascript');

    /*--- Is "/bookmark.php" going to work on all target pages?
    */
    jsScript.setAttribute('src', '/bookmark.php?url=' + encodeURIComponent(location.href) + '&title=' + encodeURIComponent(document.title));

    document.getElementsByTagName('head')[0].appendChild(jsScript);

    return false;
}


window.addEventListener ("load", LocalMain, false);
//LocalMain();


GM_addStyle
(
   '#idBookMarkBtnContainer                         \
    {                                               \
        position:               absolute;           \
        top:                    0;                  \
        left:                   0;                  \
                                                    \
        background:             orange;             \
        border:                 3px double #999999; \
        margin:                 5px;                \
        opacity:                0.9;                \
        z-index:                222;                \
                                                    \
        min-height:             10px;               \
        min-width:              20px;               \
        padding:                5px 20px;           \
    }                                               \
    #idMySubmitBtn                                  \
    {                                               \
        cursor:                 pointer;            \
    }                                               \
   '
);
票数 2
EN

Stack Overflow用户

发布于 2010-05-25 02:06:11

让它成为一个实际的命名函数,而不是一个闭包(就在Greasemonkey脚本中),然后将该函数添加为所述按钮的onclick=事件,直接内联到实际函数的正下方。

虽然,为此目的劫持预先存在的网页按钮是不安全的,也不是一种官方认可的方法-将其附加到Greasemonkey Menu Command并从那里启动它要好得多,也更容易(右键单击小猴子图标查看菜单)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2898974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档