【问题标题】:Why is javascript executing when the page loads?为什么页面加载时会执行 javascript?
【发布时间】:2012-04-22 18:54:44
【问题描述】:

我正在使用 JSP 编写网站。我在下面包含了一个代码 sn-p。

我遇到的问题是每次页面加载时,javascript 中的 addBookmark() 方法都会执行,但我没有看到警报。当我按下按钮时,我看到了警报,但没有调用 addBookmark() 方法。是什么导致了这种奇怪的行为?

<% User user = new User() %>
<script type="text/javascript">
   function add()
   {
      <% user.addBookmark(); %>                               
      alert("addBookmark");
   }
</script>

<button type="button" style="float: right" onclick="add()">Bookmark</button>

先谢谢了!

【问题讨论】:

  • 也许你应该发布生成的文件(即你的浏览器看到的)。
  • 您试图触发addBookmark()user 对象是什么?根据@Gabe,发布您的浏览器呈现的内容。

标签: javascript jsp


【解决方案1】:

因为 JSP 不直接与浏览器通信,也不知道浏览器对页面做了什么以及用户做了什么。它只是一个简单的解释器,它遍历您的代码并查找&lt;%。任何介于&lt;%%&gt; 之间的代码都会被执行,其余的只是被写入浏览器。这意味着 JSP 解释器不会读取您的 JavaScript,服务器只会添加书签。

您正在寻找的是对服务器的实际添加书签的请求。 mypage.jsp?addBookmark=true 之类的东西会添加书签。

【讨论】:

  • 好的,这是有道理的。那么有没有办法解决这个问题?我宁愿不必求助于表单和 servlet。我想保持简单
【解决方案2】:

JSP 在页面加载时执行,因为 JSP 中的所有命令都在您的服务器上执行。 相反,Javascript 仅在浏览器中执行。

所以你看到的是服务器正在构建页面,执行功能,然后输出页面。 该功能不再在您的 javascript 中。如果它本身不输出一些 javascript 代码,至少不会。

当您单击按钮时,jsp 代码已经执行。如果你想在那一刻执行代码,你需要用 javascript 而不是 jsp 编写它,或者使用另一个请求调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2021-07-05
    • 2014-03-02
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多