0

ブックマークレットを介して追加しているフォーム内のページで利用可能なphp変数を取得するのに問題があります

ブックマークレットコード:

<a class="bookmarklet" href="javascript:(function(){var%20script=document.createElement('script');script.src='http://webcreationcentre.com.au/manage/manage.js';document.body.appendChild(script);})()">title checker</a>

manage.jsコード:

(function(){

// the minimum version of jQuery we want
var v = "1.3.2";

// check prior inclusion and version
if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
    var done = false;
    var script = document.createElement("script");
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js";
    script.onload = script.onreadystatechange = function(){
        if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
            done = true;
            initMyBookmarklet();
        }
    };
    document.getElementsByTagName("head")[0].appendChild(script);
} else {
    initMyBookmarklet();
}

function initMyBookmarklet() {
    (window.myBookmarklet = function() {

    var title = '<?php echo $data->title; ?>';
    alert(title);

    $('body').append($('<div></div>').css('width','100%')
        .append($('<form></form>')
        .append($('<label for="title">Title</label>'))
        .append($('<input type="text" name="title" value="<?php echo $data->title; ?>">'))));
        // your JavaScript code goes here!
    })();
}

})();
4

1 に答える 1

0

JSがと呼ばれる静的ファイル内にある場合、manage.jsPHPはそれを処理しないため、JSに追加<?php ... ?>するだけでは何の役にも立ちません。

それPHPによって処理されていた場合(たとえば、実際に処理されていた場合)、ブックマークレットを実行しているページと同じmanage-js.phpPHPページの一部にはなりません(ブックマークレットはStackOverflowで実行できます。 PHPが気にかけている)ので、JSを生成していたPHPファイルでさらに上に定義する必要があり、ブックマークレットを実行した場所については何も知りません。$data->title

于 2013-03-17T23:39:45.500 に答える