我遇到了问题..
实际上,从子页面向父页面发送值时确实存在问题。 我实际上是通过JQuery加载页面,并且该页面正在刷新以显示新结果,但是其中一个问题是父页面中的函数不会从子页面调用。 虽然这在Google Chrome,Opera和Safari上运行良好,但它似乎不适用于Firefox。 我听说Firefox不像Safari或Google Chrome那样管理事件吗? 我一直在寻找答案,但我找不到任何东西..
好的,这就是我正在做的事情:
子页面调用另一个文件,该文件具有使我的网站工作的所有功能,这是应该触发该功能的内容:
$like = "<a href='$comment_poster' id='$msgid' class='like'
onclick='parent.likecomment(this);'>Like</a>";
echo "$like";
这是从位于父页面的onclick事件中触发的函数(该函数位于父页面中,onclick位于子页面中):
此函数是从子页面接收id以便稍后将值添加到数据库的函数。
function likecomment(commentID)
{
event.preventDefault();
var likeid = commentID.id;
var author = ($(commentID).attr('href'));
// forming the queryString
var data = 'likeid='+ likeid + '&author=' + author;
if(likeid)
{
// ajax call
$.ajax({
type: "POST",
url: "likeprofmessage.php",
data: data,
beforeSend: function(html)
{
$(".word").html(likeid);
},
success: function(html){
$("#resultsprofcomments").fadeIn('slow');
$('#profcommentsdiv').load('showprofmessages.php?vprofile=<?php echo $row['1'];?>').fadeIn("slow");
$("#resultsprofcomments").append(html);
}
});
}
}
我尝试过Firefox控制台并收到错误:event is undefined
所以这应该是Firefox如何管理事件的问题。
再次感谢任何帮助,非常感谢。
答案 0 :(得分:0)
我认为只要您在HTML中设置内联的onclick处理程序(如您在示例中所做的那样),以下内容就会起作用:
<A href="..." onclick='parent.likecomment(event,this);'>blah</A>
<SCRIPT>
function likecomment(evt, commentID) {
evt.preventDefault();
var likeid = commentID.id;
// etc
}
</SCRIPT>
对于事件处理程序而不是在HTML中设置内联,符合标准的浏览器(包括FF)应自动将事件对象作为参数传递给处理函数。 IE,最高版本8,无论如何,使用不同的事件模型,并允许您直接引用event
- 实际上它是window.event
但通常与大多数窗口属性一样,即使您省略{{1} }。
因此,如果您在文档就绪(或onload)上分配单击处理程序,则可以执行以下操作:
window.
答案 1 :(得分:0)
您设法弄乱了代码,但尝试更改
onclick='parent.likecomment(this);'
到
onclick='parent.likecomment(this);return false;'
然后删除
event.preventDefault();
来自您的函数likecomment(commentID)
。
答案 2 :(得分:-1)
您是否尝试过发回一个类似
的脚本,而不是使用内联onClick<Script>$('#{id}').click(function() {
var id = this.id;
likecomment(id);
return false;
})</Script>