右键单击页面如何增强Blob的选项“另存为”

时间:2018-07-20 14:22:02

标签: javascript rss blob save-as new-window

我会尽快解释一下情况。

我正在一起使用Apache Velocity和JavaScript,现在我想通过单击一个按钮在新页面中可视化RSS Feed。

为此,我传递了一个包含所有格式化为以下代码的rss_text的字符串:

    var xmltext = '<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><root>Hello World</root></rss>';
    var contentType = 'text/xml';
    var file_name = 'rss_feed.xml';

    var pom = document.createElement('a');
    var bb = new Blob([xmltext], {type: contentType});

    pom.setAttribute('href', window.URL.createObjectURL(bb));
    pom.setAttribute('download', file_name);

    pom.dataset.downloadurl = [contentType, pom.download, pom.href].join(':');
    pom.draggable = true; 
    pom.classList.add('dragout');

    document.body.appendChild(pom);
    pom.click();
    window.open(pom.getAttribute('href'));
    setTimeout(function(){
        document.body.removeChild(pom);
    },1000);

通过这种方式,我可以在另一个窗口中获取RSS并同时下载rss_feed.xml文件。

现在的问题是:当我在RSS页上的任何地方用鼠标右键单击时,我的“另存为...”选项被禁用,可能是因为它是我使用的Blob之类的东西。


我已经尝试了所有可能的方法,但都没有成功,无法像现在这样接近。

    window.open('data:text/xml;charset=utf-8,' + xmltext, "", "_blank");

    window.open('data:application/xml;' + encodeURIComponent(xmltext));

或再次

    var parser = new DOMParser();
    var xmlDoc = parser.parseFromString(xmltext, "application/xml");

    var oSerializer = new XMLSerializer();
    var sXML = oSerializer.serializeToString(xmlDoc);

    var myXmlWindow = window.open("","");
    myXmlWindow.document.write(sXML);
    myXmlWindow.focus();


打开RSS窗口时,我不想并行下载, 但是我问是否有办法“启用”该选项以进行手动保存(我知道这听起来很傻,但这是我工作的一部分)。

我希望一切都清楚,谢谢大家的帮助。

0 个答案:

没有答案