Использование фильтра wordpress the_content для ввода javascript приводит к синтаксической ошибке javascript

#javascript #wordpress #filter

#javascript #wordpress #Фильтр

Вопрос:

Я пишу плагин WordPress для добавления некоторых javascript и html в сообщение. Используя фильтр «the_content», мне удается вставить свой тег со всеми моими функциями javascript и всей моей разметкой html впоследствии. Проблема в том, что скрипты не работают, и firebug называет это синтаксической ошибкой, не будучи очень точным относительно того, где лежит ошибка.

Вот содержимое тегов javascript, которые вставляются на страницу, которая, похоже, не содержит каких-либо синтаксических ошибок, когда я ее проверяю.

     <![CDATA[ 
    Votes = {};
    $(document).ready(function()
    {
        $(".starContainer span").hover(sr_addBG("http://revealcoupons.com/wp-content/plugins/StarRatingLite/images/stars.png"), sr_removeBG());
    });
function sr_addBG(ImgURL){
    $(this).css("background","transparent url(" ImgURL ") repeat-x 0 -60px");
}
function sr_removeBG(){
    $(this).css("background","none");
}
function sr_castVote(ID,Vote, ImgURL){
    Votes[ID] = Vote;
    $("#starContainer" ID " span").css("background","none");
    $("ID" ID "Star" Vote).css("background","transparent url(" ImgURL ") repeat-x 0 -60px");
}
function sr_verifyVote(NbFeatures){
    var count = 0;
    for (var e in Votes)
    {count  ;}
    return count >= NbFeatures;
} 
function sr_submitVotes(NbFeatures, PostID){
    if (sr_verifyVote(NbFeatures))
    {
        ajaxReq = new XMLHttpRequest();ajaxReq.onreadystatechange=function() 
        {
            if (ajaxReq.readyState == 4 amp;amp; ajaxReq.status == 200)
            {
                alert("BAM! vote submitted. Thank you");
            }
        }
        var voteStr = "";
        for (var vote in Votes)
        {voteStr  = vote "[eq]" Votes[vote] "[amp]";}
        voteStr = voteStr.substring(0, voteStr.length - 5);
        ajaxReq.open("http://revealcoupons.com/wp-content/plugins/StarRatingLite/StarRatingLite.php?PostID=" PostID "amp;votes=" voteStr");
        ajaxReq.send();
    }
    else
    { 
        alert("You must vote on all features before submitting your opinion.");
    }
}]]amp;>
  

Единственная ошибка, которую выдает firebug, — это «синтаксическая ошибка», не будучи более конкретной. Единственное, что я не написал для so, — это конец раздела cdata, где символ «>» автоматически заменяется на «>».

Спасибо за любой вклад!

Комментарии:

1. можете ли вы вставить вывод ошибки firebug?

2. вывод firebug на самом деле представляет собой весь javascript без новых строк и табуляций, поскольку я удаляю их с помощью preg_replace . Я переформатировал его для доступности

Ответ №1:

вы .hover() ошибаетесь. он ожидает 2 обработчика функций, и вместо этого вы передаете undefined дважды

попробуйте с этим, были ли добавлены обертки функций

 $(".starContainer span").hover(function(){sr_addBG("http://revealcoupons.com/wp-content/plugins/StarRatingLite/images/stars.png")}, function(){sr_removeBG()});
  

Комментарии:

1. Я добавил анонимные обертки функций, но это все равно приводит к той же ошибке (синтаксическая ошибка). Есть еще идеи относительно возможного источника этой ошибки?

2. вы пробовали удалять открытие и закрытие раздела CDATA? или комментируя его