gpt4 book ai didi

javascript - 复制到剪贴板包括目标元素的父元素

转载 作者:行者123 更新时间:2023-11-30 13:50:41 25 4
gpt4 key购买 nike

编辑 - 附加信息:

简化的沙箱 - https://codesandbox.io/s/stupefied-leftpad-k6eek

演示:https://imgur.com/a/SDWTQno

问题似乎不会发生在 firefox 上,但会出现在 chrome 和其他浏览器上


我有一个呈现模板(在上面的链接中简化)的 div,它连接到一个按钮,该按钮调用一个复制到剪贴板的函数。

但是,当将复制的内容粘贴到剪贴板时,内容居中,进一步检查容器 div 样式 ({ display: 'flex', margin: '0 auto', justifyContent: 'center' } ) 也包含在所选内容中。

我如何从副本中排除父 div,它应该以文本模板中的 html 代码为目标(最好是我通过 id 定位的内容 - #signature-预览工作区,因此不应居中?

提前致谢

最佳答案

抱歉,我完全误解了您要查找的内容。我以为您希望删除所有 样式。

似乎解决这个问题的方法只是将您要复制的"template"包装在 div 中,而不对其应用任何样式..

这是一个demo using Gmail在 Chrome 中..

const { useRef, useCallback } = React;
const { render } = ReactDOM;

function App() {
const ref = useRef();

const copyTextToClipboard = el => {
let range = document.createRange(0);
range.selectNode(el);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
document.execCommand("copy");
window.getSelection().removeAllRanges();
};

const handleCopyClick = useCallback(() => {
copyTextToClipboard(
ref.current.querySelector("#signature-preview-workspace")
);
}, [ref]);

return (
<div>
<div
ref={ref}
style={{ display: "flex", margin: "0 auto", justifyContent: "center" }}
>
<div
dangerouslySetInnerHTML={{
__html: `
<!DOCTYPE html>
<html>
<body style="margin:0;padding:0;">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<table id="signature-preview-workspace" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="color: red;">Contents here...</td>
</tr>
</tbody>
</table>
</body>
</html>
`
}}
/>
</div>

<button onClick={() => handleCopyClick()}>Copy</button>
</div>
);
}

render(<App />, document.getElementById("root"));
<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>

<div id="root"></div>

关于javascript - 复制到剪贴板包括目标元素的父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58312917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com