最初のカット
11579 ワード
…から続く背景の物語を開始します.
少し前に、私は私が使用するウェブサイトにコピーボタンを加えました.目標はHTMLの要素をコピーすることであり、特に特定の小さなテーブルのテーブル、一般的に小さいが、かなり大きく、電子メールで使用するクリップボードにコピーすることでした.
レガシーソリューション👴: 選択とコピー
最初にオプションを研究するとき、私はR BrewerでStack Overflowによって発表される単純な解決を実行しました.
それはHTML要素を選択するための
完全解は少し言い換えられ、ここで再現されます.
遺産問題:それはすべてのバラではない...🌹🌹
この解決策は、実際に多くの問題を有する.彼らは、しばらくの間、すべてのことに耐えられていました. Firefoxは、プロセスのスタイルの多くを失う.具体的に、私に顕著に、テーブル行の色.すべての色が失われます.クロムは対照的にそれらを尊重し、コピーの色を保存します.ここで回避策は、ちょうどクロムやクロムを使用してメールを準備し、罰金だった.そして、すべてはよかったです. 選択が見える.それはとても不器用で醜いので、行かなければならなかった.修正は難しくありません、基本的に、要素はコピーされます、そして、それからスクリーンとその要素が選ばれたので、選択が起こるとき、見えません.きちんとしたトリック.実装されている解決策は以下のようになりました.
いいえ、私は考えました.私はちょうど
そして、それは長い間の解決策でした.私は、ちょうどこれらのテーブルをコピーするために、クロムを使いました.
壊れた遺産:1つの藁が多すぎる.🐪
そして、ある日、私は最終的にサイトの色管理を簡素化して、集中させたかったので、すべてのCSSカラースタイル値をCSS variablesに吸い込みました.そして、突然、色は私のクロムコピーからすべて消えました.
ああピッフル!
それで、フィックスの狩りを始めました.どのように、ああ、これを修正するには?CSSの変数をサポートするための欲求は、選択のトリックを失うことを望んでいたと何かを少しより多くのハックとより滑らかです.
ステップ1では、クリップボードにデータを取得するオプションを調べます.
少し前に、私は私が使用するウェブサイトにコピーボタンを加えました.目標はHTMLの要素をコピーすることであり、特に特定の小さなテーブルのテーブル、一般的に小さいが、かなり大きく、電子メールで使用するクリップボードにコピーすることでした.
レガシーソリューション👴: 選択とコピー
最初にオプションを研究するとき、私はR BrewerでStack Overflowによって発表される単純な解決を実行しました.
それはHTML要素を選択するための
document.createRange
と Range.selectNodeContents()
を使用し、それからクリップボードにコピーするために document.execCommand('copy')
を使用します.完全解は少し言い換えられ、ここで再現されます.
function copyElementToClipboard(el) {
var body = document.body, range, sel;
if (document.createRange && window.getSelection) {
range = document.createRange();
sel = window.getSelection();
sel.removeAllRanges();
try {
range.selectNodeContents(el);
sel.addRange(range);
} catch (e) {
range.selectNode(el);
sel.addRange(range);
}
} else if (body.createTextRange) {
range = body.createTextRange();
range.moveToElementText(el);
range.select();
}
document.execCommand("Copy");
}
そのような作品.まあ十分なので、私は公正な時間のためにそれに立ち往生.遺産問題:それはすべてのバラではない...🌹🌹
この解決策は、実際に多くの問題を有する.彼らは、しばらくの間、すべてのことに耐えられていました.
function selectElementContents(el) {
let body = document.body, range, sel;
if (document.createRange && window.getSelection) {
range = document.createRange();
sel = window.getSelection();
sel.removeAllRanges();
try {
range.selectNodeContents(el);
sel.addRange(range);
} catch (e) {
range.selectNode(el);
sel.addRange(range);
}
} else if (body.createTextRange) {
range = body.createTextRange();
range.moveToElementText(el);
range.select();
}
}
function copyElementToClipboard(element) {
let el = element.cloneNode(true);
el.setAttribute('readonly', '');
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);
selectElementContents(el);
document.execCommand('copy');
document.body.removeChild(el);
}
これは1つの注意を運びました、そして、それは私を冷笑させて、同時に笑いました.Firefoxは、実際に位置決めスタイルを尊重クロムはなかった.彼らの行動の特異性の完全な逆転.しかし、Firefoxのコピーは、すべての色を失っただけでなく、ページの左側にオフに配置され、それが見えなかった電子メールに貼り付けられた(私は電子メールのHTMLソースを見ていない限り-何が起こっているかを確認するために必要).いいえ、私は考えました.私はちょうど
div
にそれを包みました.そして、それは位置しました、そして、私はdiv
自体でなく、div
の内部で要素をコピーしました.しかし、Firefoxは私にとってはあまりにもスマートで、まだ貼り付けられたとき(左からラップされたdiv
から)、スクリーンを左から左に配置しました.気にしないで、クロムはうまくいきました.そして、それは長い間の解決策でした.私は、ちょうどこれらのテーブルをコピーするために、クロムを使いました.
壊れた遺産:1つの藁が多すぎる.🐪
そして、ある日、私は最終的にサイトの色管理を簡素化して、集中させたかったので、すべてのCSSカラースタイル値をCSS variablesに吸い込みました.そして、突然、色は私のクロムコピーからすべて消えました.
ああピッフル!
それで、フィックスの狩りを始めました.どのように、ああ、これを修正するには?CSSの変数をサポートするための欲求は、選択のトリックを失うことを望んでいたと何かを少しより多くのハックとより滑らかです.
ステップ1では、クリップボードにデータを取得するオプションを調べます.
Reference
この問題について(最初のカット), 我々は、より多くの情報をここで見つけました https://dev.to/thumbone/copy-to-clipboard-first-cut-1j5jテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol