是否无法使用 HTML 例如 <a href..in a JavaScript Sheet?

Is it Impossible to Use HTML Such as <a href..in a JavaScript Sheet?

我最近问了一个关于如何创建一个打开 window 的 mailto 共享按钮的问题,人们可以在其中输入电子邮件地址以发送到 ( ) 用户 Ron Royston 向我提供了一个很好的回应,他在其中建议,“你可以创建一个页面来获取电子邮件字符串,然后在服务器端做任何你想做的事。让 popup/popover 小赞:

<a href="/my-email-collector-page"
   onclick="window.open(this.href,'targetWindow',
                                   'toolbar=no,
                                    location=no,
                                    status=no,
                                    menubar=no,
                                    scrollbars=yes,
                                    resizable=yes,
                                    width=200px,
                                    height=120px');
 return false;">email</a>"

这是一个很好的方法,但是,当我将此代码插入我的 JavaScript sheet(在我的 CodePen 此处:https://codepen.io/IDCoder/full/rpdBQJ/)时,其中包含我的其他社交媒体分享按钮代码,此代码禁用这些按钮的代码?我想弄清楚为什么会这样……是因为在 JavaScript 环境中使用了 <a href="........"></a> 吗?如果是这样,有没有办法将 Ron 的代码集成到包含点击功能的代码中,如下所示:

$('.whatever classname').click(function() {

window.open();

});

本质上,开始,window.open(this.href,'targetWindow',.... 如何将下面的代码插入: 到上面的代码中?

window.open(this.href,'targetWindow',
                                       'toolbar=no,
                                        location=no,
                                        status=no,
                                        menubar=no,
                                        scrollbars=yes,
                                        resizable=yes,
                                        width=200px,
                                        height=120px');
     return false;

您可以在 <button> 元素上设置 data-* 属性,指向您创建的 HTML 文档

<button data-href="/path/to/html/document" id ="EM" type="button" class="Email share-page-on-Email">Email</button>

var emailWindowSettings = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=200px,height=120px';

$("#EM").on("click", function() {
  var emailWindow = window.open(this.dataset.href,'targetWindow', emailWindowSettings);
  return false;
})