リンクをクリックしてsvgファイルをダウンロードします

JK2018

力指向グラフを表すsvgがあります。リンクをクリックするだけでこのsvgをダウンロードし、svgファイルとして保存したいと思います。他の同様の投稿からいくつかの解決策を試した後、ボタンのupponクリックと呼ばれるこの関数を思いつきました:

<a id="svglink" href=""  @click="saveSvg2" download="testSvg.svg" >DOWNLOAD</a>
saveSvg2(){
    // https://askcodez.com/comment-puis-je-enregistrer-exporter-un-fichier-svg-apres-la-creation-dun-svg-avec-d3-js-ie-safari-et-chrome.html
    //get svg element.
    var svg = document.getElementById("graph").child; // this.exportableMap

    //get svg source.
    var serializer = new XMLSerializer();
    var source = serializer.serializeToString(svg);

    //add name spaces.
    if(!source.match(/^<svg[^>]+xmlns="http:\/\/www\.w3\.org\/2000\/svg"/)){
        source = source.replace(/^<svg/, '<svg xmlns="http://www.w3.org/2000/svg"');
    }
    if(!source.match(/^<svg[^>]+"http:\/\/www\.w3\.org\/1999\/xlink"/)){
        source = source.replace(/^<svg/, '<svg xmlns:xlink="http://www.w3.org/1999/xlink"');
    }

    //add xml declaration
    source = '<?xml version="1.0" standalone="no"?>\r\n' + source;

    //convert svg source to URI data scheme.
    var url = "data:image/svg+xml;charset=utf-8,"+encodeURIComponent(source);
  
    //set url value to a element's href attribute.
    document.getElementById("svglink").href = url;
    
    },

ボタンを使用してボタンを右クリックし、そこから保存すると機能しますが、左クリックで事前に定義されたファイル名でダウンロードしたいのですが。理想的にはリンクを左クリックしますが、実装が簡単な場合はボタンも機能します。これを実現するにはどうすればよいですか?

chr

これをWebサーバーから実行していることを確認してください。私はblobスキームを使用していますが、データスキームでも同じだと思います。以下の例はSTスニペットでは実行できないため、codepenの例を作成しました。初めてリンクをクリックした後でリンクを調べると、hrefに値があることがわかりますblob:https://cdpn.io/[some id]URLは、機能するはずのサインです。ページがサーバーから実行されない場合、hrefの値はのようになりますblob:null/[some id]

コードの一部をスキップしたことは知っていますが、これはBlobを使用してSVG文字列などのマークアップをデータURLに変換する方法の最小限の例です。

document.links.svglink.addEventListener('click', e => {
  let svg = document.querySelector('svg').outerHTML;
  let blob = new Blob([svg], {type : 'image/svg+xml'});
  e.target.href = URL.createObjectURL(blob);
});
<svg viewBox="0 0 100 100" width="100" xmlns="http://www.w3.org/2000/svg">
  <rect width="100" height="100" fill="orange" />
</svg>

<a name="svglink" href="javascript:void(0)" download="hello.svg">DOWNLOAD</a>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Rを使用して、ファイルの「クリック」を模倣してダウンロードします

hrefリンクをクリックしながらファイルをダウンロードしますか?

クリックしたファイルを一覧表示してFTPからダウンロードします

ファイルをクリックしてSeleniumPythonをダウンロードします

ファイルをダウンロードし、リンクをクリックして一番下のdivまでスクロールします

Meteorのリンクをクリックしてファイルをダウンロードする

JQueryを使用して「ダウンロード」リンクをクリックしてもファイルはダウンロードされません

ボタンクリックでカールを使用してファイルをダウンロードする

リンクをクリックして、curlを使用してファイルをダウンロードします

PythonSeleniumを使用してファイルをクリックしてダウンロードする

HTMLUnitがアンカーをクリックしてZIPファイルをダウンロードする方法

Flask:ボタンをクリックしてcsvファイルをダウンロードする

ボタン(asp.net)をクリックしてファイルをダウンロードする方法は?

ボタンをクリックしてファイルをダウンロードする方法(Android Studio)

GeckoWebBrowserを使用してHTMLボタンクリックでファイルをダウンロードする

WebClientを使用してクエリをPOSTし、ファイルをダウンロードします

リンクを使用してjsonファイルをダウンロードします

railsはパブリックフォルダからファイルをダウンロードします

モデルで、ボタンをクリックしてPDFファイルをダウンロードしますが、機能しません(Laravel)

共有リンクを使用して、ファイルをクラウドストレージフォルダーにアップロードします

javascriptで作成された要素をクリックしてトリガーし、csvファイルをダウンロードします

Rを使用して、Webページのダウンロードファイルボタンを「クリック」するのを模倣します

Microsoft Graphを使用して、OneDriveファイルへの永続的なパブリックダウンロードリンクを作成します

JFrogCLIを使用して現在のディレクトリにファイルをダウンロードします

Restangularリクエストを使用してRESTAPIからファイルをダウンロードします

HTTRGETリクエストを使用してgithubから.csvファイルをダウンロードします

golangはファイルをダウンロードしてリダイレクトに従います

私は現在、ファイルをダウンロードさせる複数のリンクをクリックしようとしています。ただし、複数のファイルをクリックすることはできません

各リンクに進み、ファイルタイプを見つけてダウンロードします

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ