0

スタックオーバーフローに関連する他の同様の質問があることは知っていますが、私の問題を解決するものはありませんでした。このエラーはすべてのブラウザーで発生します (ただし、webkit エラー名を使用しました)。

PHPを使用してjavascriptを追加する必要があります。これにより、「予期しないトークンが不正です」というエラーが表示されます。私は成功せずにこの答えを試しました。これは私が今持っているものです:

    $texte .="<script>";
    $texte .="$(function(){";
    $texte .="$('#field_".$this->id."').css('position','absolute').css('left','".$this->x."px').css('top','".$this->y."px');";
    $texte .="$('#field_".$this->id."').draggable({stop:function(event,ui){saveFieldPosition(".$this->id.");},grid:[10,10],containment:\".work_plane:first\"}).resizable({grid:[10,10]});";
    $texte .="});";
    $texte .="</script>";

    return $texte;

Dreamweaver の隠し文字を有効にして、$texte 値に含まれるすべての文字を削除しました。

誰もが問題を見ますか?ヒントをいただければ幸いです。

編集: $texte は、追加される前に htmlentities() を介して渡されます。

出力は次のとおりです。

    &lt;script&gt;$(function(){$('#field_1').css('position','absolute').css('left','px').css('top','px');$('#field_').draggable({stop:function(event,ui){saveFieldPosition();},grid:[10,10],containment:&quot;.work_plane:first&quot;}).resizable({grid:[10,10]});});&lt;/script&gt;
4

2 に答える 2

2

そのように文字列を区切る必要はありません。また、使用できますHEREDOC

$texte .= <<<JAVASCRIPT
   <script language="javascript">
       $(function() {
           $('#field_{$this->id}').css('position','absolute').css('left','{this->x}px').css('top','{$this->y}px');
           $('#field_{$this->id}').draggable({
                   stop:function(event,ui){
                           saveFieldPosition({$this->id});
                       },
                   grid:[10,10],
                   containment: ".work_plane:first"
               }).resizable({
                   grid:[10,10]
               });
       });
    </script>
JAVASCRIPT;
于 2012-07-31T19:12:59.033 に答える
1

編集済み

包含の後の " " は、エスケープなしの単一引用符 ' ' にする必要があります -

$texte .="$('#field_".$this->id."').draggable({stop:function(event,ui){saveFieldPosition(".$this->id.");},grid:[10,10],containment:'.work_plane:first'}).resizable({grid:[10,10]});";

これにより、PHP による構文的に正しい JS 出力が保持されます。

行の先頭に二重引用符 " があります。その後、単一引用符をエスケープせずに内部で使用できます。

"foo:'bar'"

と同じです

"foo:\"bar\""
于 2012-07-31T19:12:16.417 に答える