我想要做的基本上是创建一个插件来生成名为main的div内容的innerHTML并将其下载为文本文件。但是,我不希望在运行所有js / jquery函数后获取后渲染的html。我设法做到了,但是问题是它生成了所有东西。
HTML:
<button id= "clickhere">CLICK HERE</button>
<div id="main">
<p id="yeah" class="hide">asdasdadadad</p>
<span>Hey there</span>
</div>
CSS:
.hide{
display: none;
}
JS:
$('#clickhere').click(function(){
//location.reload();
downloadeverything();
});
function downloadeverything(){
function downloadInnerHtml(filename, elId, mimeType) {
var elHtml = document.getElementById(elId).innerHTML;
var link = document.createElement('a');
mimeType = mimeType || 'text/plain';
link.setAttribute('download', filename);
link.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(elHtml));
link.click();
}
var fileName = 'testing.txt';
downloadInnerHtml(fileName, 'main','text/html');
}
$('#yeah').show('puff', 750);
显然,我的项目更大,但是我创建了一个示例小提琴来显示问题。基本上,当我添加fadeIn或puff Jquery动画时,生成的txt文件为我提供了一种样式:如图所示,在txt文件上显示:块。
我发现了一个不理想的解决方法,该方法是在顶部添加下载功能,以便首先运行,但随后又不是我想要的,因为当我运行多个js文件时,它不起作用。
我也尝试过强制重新加载并立即下载,但是它不起作用。有没有一种将html文件预呈现为txt的方法,以便在单击下载按钮时可以获取所需的文本或将html内容设置为字符串?
我的样本:http://jsfiddle.net/yomuffin89/fzg39sk5/8/
更新:我需要在主div内包含带有动画的脚本标签(我知道..但它的ie6),因此,如果代码按顺序生成,则它将获取该div内的所有内容。有没有一种方法可以将文件以txt格式运行,以便它仅将div内容作为文本获取,而没有任何后缀应用于文本?
更新的提琴:http : //jsfiddle.net/yomuffin89/fzg39sk5/13/
如果有人可以帮助我,我将不胜感激。
您可以像这样获取内容onPageLoad事件:
var elHtml;
$('#clickhere').click(function(){
location.reload();
downloadeverything();
});
function downloadeverything(){
function downloadInnerHtml(filename, elId, mimeType) {
var link = document.createElement('a');
mimeType = mimeType || 'text/plain';
link.setAttribute('download', filename);
link.setAttribute('href', 'data:' + mimeType + ';charset=utf-8,' + encodeURIComponent(elHtml));
link.click();
}
var fileName = 'testing.txt';
downloadInnerHtml(fileName, 'main','text/html');
}
$(document).ready(function(){
elHtml = document.getElementById('main').innerHTML;
$('#yeah').show('puff', 750);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句