javascript - jQuery addEventListener 找不到函数

标签 javascript jquery html addeventlistener

我有一个页面使用 window.postMessage 监听来自另一个域上的页面的消息(通过 iframe)。我以前的代码有效:

<script type="text/javascript">
    window.addEventListener("message", receiveMessage, false);

    function receiveMessage(event) {
      if (event.data == "scrollTop"){
          window.scrollTo(0,0);
      }
    }
</script>

即使上面的代码有效,我需要限制它执行,除非 .postMessage 来自特定域 ( http://origindomain.com ),所以我将上面的代码更改为以下内容:

<script type="text/javascript">
    window.addEventListener("message", receiveMessage, false);

    $(function () {
        $.receiveMessage(function(event){  
            if (event.data == "scrollTop") {
                window.scrollTo(0, 0);
            }

            // An optional origin URL (Ignored where window.postMessage is unsupported).
            }, 'http://origindomain.com' );
        });
    });
</script>

第二种方法行不通。 Firebug 控制台的错误输出是:

ReferenceError: receiveMessage is not defined
window.addEventListener("message", receiveMessage, false);

jQuery 不是我的第一语言,所以如果解决方案显而易见,我深表歉意。为什么未定义 receiveMessage() 回调?

最佳答案

您从未定义过 receiveMessage,而是尝试使用 $.receiveMessage。你错过了使用 jquery 方法,你并不总是需要等待 dom 准备好。您也根本不需要 jquery。

<script type="text/javascript">
    window.addEventListener("message", receiveMessage, false);

    //$(function () {
    function receiveMessage(event){  
        if (event.origin == "http://origindomain.com" && event.data == "scrollTop") {
            window.scrollTo(0, 0);
        }
    }
    //});
</script>

如果您安装了一个定义了 $.receiveMessage 的 jQuery 插件,那么您可能根本不需要第一行,因为插件应该会处理它。但是,我不确定为什么此功能需要插件。

关于javascript - jQuery addEventListener 找不到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316945/

相关文章:

javascript - 如何在我的代码中允许 "0."小数

javascript - php更新localstorage数组而不添加新数组

javascript - 如何在客户端使用 Node.js 变量?

PHP/MySQL - 使用表内容之外的名称创建变量?

javascript - 如何安全地将一段数据放入div标签中?

javascript - 如何用输入框替换当前确定变量值的用户提示?

javascript - 在 Javascript 中获取查询字符串数组值

javascript - 单击事件在 Chrome 中不起作用,但当我们从控制台手动执行时会触发事件

javascript - 阻止子元素的父元素函数onclick

javascript - 在 Angular JS 中切换 ng-repeat 中的图标