我知道还有其他类似的问题与堆栈溢出有关,但似乎没有一个能纠正我的问题。这个错误发生在每个浏览器上(尽管我使用了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在添加之前通过htmlenties()传递。
这是输出:
<script>$(function(){$('#field_1').css('position','absolute').css('left','px').css('top','px');$('#field_').draggable({stop:function(event,ui){saveFieldPosition();},grid:[10,10],containment:".work_plane:first"}).resizable({grid:[10,10]});});</script>
您不需要像那样分离字符串。此外,您可以使用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;
已编辑
包含后的"应该是单引号",没有转义符-
$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'""