php 回显 javascript 调用

标签 php javascript

我是网页设计/php 和 javascript 的新手,我遇到了问题。请看一下这段代码:

  <script type="text/javascript">
<!--
function thanksDiv(){
    document.getElementById("myThanksDiv").style.display ='block';
}
function hideDiv(id){
    document.getElementById(id).style.display='none';
}

//-->
</script>

        <form id="contacts-form" method="post" action="email.php" target="myiframe">
           <fieldset>

           <div class="alignright"><a href="#" onClick="document.getElementById('contacts-form').submit()">Send Your Message!</a></div>
           </fieldset>
        </form>

<iframe  name="myiframe" id="myiframe" src="" width=1 height=1 style="visibility:hidden;position:absolute;"></iframe>

<div id="myThanksDiv" style="width:200px;height:150px;position:absolute;left:50&#37;; top:20px; margin-left:-100px;border:1px solid black; background:#fff;display:none;padding:20px;">Thanks! <br />Your message was sent.</div>

在 email.php 中:

echo '<script type="text/javascript">'
   , thanksDiv();'
   , '</script>';
?>

这个想法是,当我点击“发送您的消息”时,我应该看到一个框,上面写着“消息已发送”,但我没有。

如果我不浏览 email.php 页面,而只是从表单提交链接调用ThanksDiv,那么它就可以工作。知道为什么吗?

最佳答案

iframe 中的 JavaScript 与定义该函数的父文档不在同一“范围”内。

为了调用它,请尝试:

echo '<script type="text/javascript">'
   , 'parent.thanksDiv();'
   , '</script>';

区别在于“parent”,它告诉 JS 在框架的父级中查找该函数;)

请确保所有内容都位于同一域/端口上,否则您可能会违反同源政策,因此可能无法正常工作。

编辑

以下配置在我的机器(PHP5、Firefox)上运行良好:

测试.html

<html>
<head>
  <script type="text/javascript">
  <!--
    function thanksDiv(){
      document.getElementById("myThanksDiv").style.display ='block';
    }
    function hideDiv(id){
      document.getElementById(id).style.display='none';
    }
  //-->
  </script>
</head>
<body>
  <form id="contacts-form" method="post" action="email.php" target="myiframe">
    <fieldset>
      <div class="alignright"><a href="#" onClick="document.getElementById('contacts-form').submit()">Send Your Message!</a></div>
    </fieldset>
  </form>

  <iframe  name="myiframe" id="myiframe" src="" width=1 height=1 style="visibility:hidden;position:absolute;"></iframe>

  <div id="myThanksDiv" style="width:200px;height:150px;position:absolute;left:50px;top:20px; border:1px solid black; background:#fff;display:none;padding:20px;">Thanks! <br />Your message was sent.</div>
</body>
</html>

电子邮件.php:

<?php
echo '<script type="text/javascript">parent.thanksDiv();</script>';
?>

关于php 回显 javascript 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14744731/

相关文章:

javascript - 根据 ajax 的值终止或停止

javascript - 我们可以在 `<tr></tr>` 之后使用嵌套表吗?

php - 按用户对 mysql 结果进行分组

javascript - 如何使用 AngularJS 获取数据库列?

javascript - AngularJS 预期信息未显示

php - 我可以获得服务器端提交按钮的宽度吗?

javascript - 如何从 JavaScript 中的 AJAX 调用获取 URL 变量?

javascript - 如何防止谷歌可视化区域图中多列重叠

javascript - 如何将 ajax json 响应保存到全局变量以供重用

javascript - 如何使用js或jquery获取超时时间