如何通过首先浏览文本文件中的内容或html文件中的html代码加载到textarea?

时间:2010-07-12 08:45:07

标签: javascript html

使用javascript,如何从网页打开文本文件或html文件,并将文本文件或html代码中的内容加载到textarea。请不要告诉我这不可能使用javsscript,它是可能的,但我不知道代码和我的兄弟不回家一个星期。示例代码将不胜感激。 (我已经问过这个问题但是每个人似乎都集中在问题的另一部分。)

<html>
<body>
<form name="abc">
<textarea name="text">loaded text here</textarea>
<input type="button" onClick=""> open file
</form>
</body>
</html>

我在论坛中发现了这个,不记得名字,这是一个有效的代码,但只能加载文本文件....现在的问题是如何从html文件中获取htmlcodes。

<html>
<head>

<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


<script type="text/javascript">

var ForReading = 1, ForWriting = 2, ForAppending = 8;
var objFSO = new ActiveXObject("Scripting.FileSystemObject");

function loadFile(btn, obj, div, fld) {
objFile = objFSO.GetFile(obj.value);
objStream = objFile.OpenAsTextStream(ForReading);
fld.value = objStream.ReadAll();
objStream.Close();
objStream= null;
fileSpecs(div, btn);
objFile = null;
return true;
}

</script>
</head>

<body>
<form name="myForm" onsubmit="return false;">

<textarea rows="25" name="fileArea" cols="70"
onkeypress="return checkText(this, btnSave);"></textarea> </td>


<input type="file" name="fileName" size="50"
onchange="return checkFile(this, document.getElementById('fileSpec'), btnLoad, btnSave, fileArea);">

<input type="button" name="btnLoad" value="Load" 
onclick="return loadFile(this, fileName, document.getElementById('fileSpec'), fileArea);"> 

</form>
</body>
</html>

这是编码器声称它正在工作的另一个,但它对我有效,如果你有时间请执行此代码...如果它正常工作,请在此处提供完整的代码。 (由Ancora编码)

<html>
<head>
<script type="text/javascript">

function init(){

var extText = window.frames.messageTxt.document.body.lastChild.lastChild.data;
extText = extText.replace(/[\r\n]/g," ");
document.forms[0].nMessage.value = extText;
}

window.onload=init;

</script>
</head>
<body>
<iframe name='messageTxt' src='txtData.txt'  style='display:none'></iframe>
<form>
<textarea name='nMessage'></textarea>
<input type="button" value="click" onClick="init()">
</form>
</body>
</html>

我想没有可以做到这一点...我有一个javascript,可以将htmlcode从外部html文件加载到textarea中。但是我丢失了那个文件,很遗憾没有人在这里有创建js函数(或活动x)的脚本功能,可以做同样的事情。

2 个答案:

答案 0 :(得分:3)

使用AJAX绝对可以。您必须记住,同源限制意味着它只能在您自己的域上运行。一种方法是使用jQuery.get

编辑:更完整的演示(另请参阅jsFiddle demo):

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.js"></script>
<script type="text/javascript">

    function download_to_textbox(url, el)
    {
      $.get(url, null, function(data)
                       {
                         el.val(data);
                       }, "text");
    }

    $(function()
    {
      $('#open').click(function()
      {
        download_to_textbox("/ajax_json_echo/?foo=bar", $("textarea[name='text']"));
      });
    });
</script>
</head>
<body>
    <form name="abc">
        <textarea name="text" rows="20" cols="70">loaded text here</textarea>
        <input id="open" value="open" type="button">
    </form>
</body>
</html>

答案 1 :(得分:2)

上面的答案工作正常,但你必须了解他们正在做什么来定制。 这是最简单的解决方案(定制上述解决方案),它是 在IE8上测试并且工作正常(请记住,您必须在iframe中看到HTML呈现以了解您的src属性是否正确):

<html> 
<head> 
<script type="text/javascript">   
function init(){ 
    var extText = window.frames[0].document.getElementsByTagName("HTML")[0].outerHTML;
    document.getElementById("nMessage").innerText = extText;
} 

</script> 
</head> 
<body> 
    <iframe name="messageTxt" src="[place the path to your html file here]" ></iframe> 
    <form> 
        <textarea name="nMessage" id="nMessage" cols="100" rows="20"></textarea> 
        <input type="button" value="click" onClick="init()" /> 
    </form> 
</body> 
</html>