我编写了一个简单的脚本,将浮动按钮添加到一系列页面,这些页面根据某些功能重定向到URL。这是通过Tampermonkey添加的。
以下内容在Chrome和Firefox中都会生成一个按钮,但只能在Chrome中点击:
var html = '<div id="gmSomeID"><button id="tapButton" type="submit"><a href="'+output_url+'" style="color:white">A</a></button></div>';
$("body").append(html);
任何可能导致问题的想法?
答案 0 :(得分:4)
该代码在语义上不明确且invalid HTML;不要这样编码!
考虑:
var output_url = '#';
var newHtml = `
<div>
<button id="badButton" type="submit">
<a id="badLink" href="${output_url}">Click me</a>
</button>
</div>
`;
$("body").prepend (newHtml);
$("#badButton, #badLink").click ( zEvent => {
console.log ("Clicked: ", zEvent.target.id);
} );
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
&#13;
您期望会发生什么?
如果您运行该代码并单击,则当前您将获得:
Clicked: badLink
。Clicked: badButton
。由于HTML无效,因此无法保证浏览器以统一的方式处理它。
所以:
type="submit"
,除非按钮位于表单内并且确实要提交它。始终默认指定type="button"
,以避免意外行为。