関数は定義されているが、ページ読み込み時にJavaScriptのエラーで「Uncaught TypeError: undefined is not a function」が出るとき

otaguro 33,539views 更新:2014年7月9日

ページ表示時に、Chromeのコンソールが「aipo.webmail.onProcessingTimer」の行に「TypeError: undefined is not a function」を出しているが、

表示後にコンソールに関数「aipo.webmail.onProcessingTimer」を打ってみると関数は存在しているので、なぜだろうかと考えていましたが、

<script language="JavaScript" type="text/javascript">
//<![CDATA[

    dojo.require("aipo.widget.AddressbookDialog");

    ptConfig['$!portlet.ID'] = { group:"webmail", initUrl:'$!utils.escapeXML($!jslink.getPortletById($!portlet.ID).addQueryData("template","WebMailScreen"))', reloadFunction:aipo.webmail.reloadMailList };

    aipo.webmail.onProcessingTimer();

//]]>
</script>

エラーの原因は、読み込みのタイミングにあったようです。次のように、実行のタイミングを遅延させるとエラーは出なくなります。

    dojo.addOnLoad(function () {
    ptConfig['$!portlet.ID'] = { group:"webmail", initUrl:'$!utils.escapeXML($!jslink.getPortletById($!portlet.ID).addQueryData("template","WebMailScreen"))', reloadFunction:aipo.webmail.reloadMailList };

    aipo.webmail.onProcessingTimer();
    });

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません