#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? или комментируя его