使用 JavaScript 将当前 URL 发送到电子邮件

Send current URL to email using JavaScript

为什么 console.log(location.href);https://www.amazon.com displays the correct URL in the console but when attempting to send a URL to email client using a JavaScript bookmarklet it fails to get the URL from https://www.amazon.com 上?

这是 JavaScript 小书签的代码,它适用于除 amazon.com 之外的几乎所有站点。
javascript:location.href=%27mailto:?SUBJECT=%27+document.title+%27&BODY=%27+escape(location.href);

注意:我也试过 window.location.href 但无济于事。

我也试过这个变体:
javascript:location.href='mailto:?SUBJECT='+document.title+'&BODY='+escape(location.href);

(在 Google Chrome 版本 64.0.3282.140 中测试)

Amazon.com 的标题似乎超过了根据 RFC2322 推荐的 78 个字符的电子邮件主题行长度。

他们的标题目前是 84 个字符。 "Amazon.com:在线购买电子产品、服装、计算机、书籍、DVD 等"

有趣的是,Outlook 2016 仅包含 document.tile 的前 78 个字符,而电子邮件的 body 不包含 location.href 的 URL。

document.title 上使用 slice(0, 77) 方法后,URL 现在包含在电子邮件的 body 中。

这是更新后的小书签。

javascript:location.href='mailto:?SUBJECT='+document.title.slice(0, 77)+'&BODY='+escape(location.href);