【问题标题】:window.location() not working, not opening pagewindow.location() 不工作,不打开页面
【发布时间】:2011-08-30 22:47:51
【问题描述】:

我有一个带有 onClick 的提交按钮:

<div id="messageDiv">
<form>
<textarea name="message" rows="10" cols="20"></textarea></textarea>
<br /><br />
<input type="submit" value="Send" onClick="sendmail()">
<input type="reset" value="Reset" name='reset'>
</form>
</div>

然后我有我的发送邮件:

   function sendmail()
   {   
      window.location.href = "http://www.rainbowcode.net/index.php/profiles/mail?="+mailid;
      window.location('http://www.rainbowcode.net/index.php/profiles/mail?='+mailid);
      //return true;
   }

mailid 是在另一个 JS 函数中设置的全局变量,它确实包含正确的值。 window.location怎么打不开我的页面?

如果我用 mailid 手动打开它,它可以正常工作..

【问题讨论】:

  • 为什么要设置 location.href 并调用 location 作为函数?
  • window.location='http://stackoverflow.com/'; 不起作用..?

标签: javascript html


【解决方案1】:

设置位置可以正常工作,但随后提交表单,它将重新加载当前页面。

从方法中返回 false:

function sendmail() {   
  window.location.href = "http://www.rainbowcode.net/index.php/profiles/mail?="+mailid;
  return false;
}

并在事件停止提交时返回该状态:

<input type="submit" value="Send" onclick="return sendmail()">

【讨论】:

  • 谢谢! return true 和 return false 有什么区别??
  • @Helloise Smit:如果您返回 false,它将停止事件的默认操作,即单击按钮。返回 true(或什么都不返回)将允许点击,这将提交表单。
  • 谢谢..一切都很好,请再做一件事:我有一个带有提交的文本区域,用户可以在其中输入消息并单击提交,然后将调用我的 window.location.href ...如何将消息传递到新窗口?我的表单是“post”,textarea 的 id 是“message”?谢谢
  • @Helloise Smit:当您使用window.location.href 时,浏览器总是执行 GET 请求。如果需要,您可以使用与mailid 相同的方式将 textarea 的值添加到 URL,首先使用 encodeURIComponent 函数对值进行编码。如果要发出 POST 请求,则必须发布表单而不是使用 window.location.href
  • 谢谢window.location.href 与mailid 完美配合,然后我将如何使用encodeURIComponent 和GET 传递消息?我不知道如何做到这一点,请帮助我对这一切都很陌生,谢谢
【解决方案2】:

如果你需要打开一个新窗口,你应该使用window.open()方法。 window.location 指的是当前窗口地址,并且只会在使用window.location.reload() 时重新加载当前窗口。

【讨论】:

  • 谢谢window.open工作,它会打开一个新窗口,但我希望能够点击后退箭头并返回上一页
【解决方案3】:

我花了 2 天时间尝试此处和其他地方显示的每个解决方案,但无济于事。然后我删除了form 标签,因为没有submit 按钮,所以没有任何用处,并且使用以下方法解决了问题:

window.location = 'mypage.php', true;

【讨论】:

    【解决方案4】:

    尝试改用replace 函数

    window.location.replace('http://www.rainbowcode.net/index.php/profiles/mail?='+mailid)
    

    【讨论】:

    • 你应该展示你是如何使用它的,这样它才能工作。答案应该回答所提出的问题,否则它只是一个评论。最好的问候
    【解决方案5】:

    已经有了可靠的答案,但为什么要与系统抗争?特别是如果您使用 jquery 或 onClick 调用 - 我的观点可能没有内联返回 - 所以您可以更改 submit 上的操作:

    document.form.action = 'http://www.rainbowcode.net/index.php'

    如果需要,您可以选择任何表单变量,如果不需要,则忽略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      相关资源
      最近更新 更多