2010-05-24 1 views
1

У меня есть букмарклет, щелчок по букмарклету включает PHP-скрипт (оцененный как файл JavaScript) на страницу с несколькими значениями таблицы и выбор значений, переданных как параметры GET. Сценарий PHP записывает данные страницы в базу данных MySQL и выводит успешное сообщение, которое обрабатывается как код JavaScript и выполняется браузером. Есть ли возможность сделать это с помощью greasemonkey и вызвать эту функцию, когда на веб-странице нажата существующая кнопка.greasemonkey insert javascript

Я написал приведенный выше букмарклет, вдохновленный этим учебным пособием.

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

Это код букмарклет:

(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); 
})(); 

Пожалуйста, помогите мне.

ответ

2

Мы делаем это много. Вот сценарий, который должен сработать для вас, просто отредактируйте оператор @include, чтобы он соответствовал страницам, на которых будет использоваться сценарий Greasemonkey.

Кроме того, /bookmark.php, вероятно, необходимо будет заменить на полный адрес, а не на относительный.

// 
// ==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;   \ 
    }            \ 
    ' 
); 
0

Сделать это фактической именованной функцией, а не закрытием (прямо в сценарии Greasemonkey), а затем добавить эту функцию как событие onclick = указанной кнопки, прямолинейное прямо под фактической функцией.

Несмотря на то, что захват ранее существовавших веб-страниц для этой цели небезопасен или официально благословенный метод - гораздо лучше и проще прикрепить его к Greasemonkey Menu Command и запустить его оттуда (щелкните правой кнопкой мыши значок маленькой обезьяны для меню).

 Смежные вопросы

  • Нет связанных вопросов^_^