JS如何在页面中插入HTML代码

JavaScript024

JS如何在页面中插入HTML代码,第1张

步骤

1、新建一网页文件“sample.html",用记事本或其它文本编辑软件(如UltraEdit)打开,输入如图所示的HTML代码。该网页文件包括一个蓝色的字符串,一个按钮和一个文本框。

2、JS代码可插入到”head"标签之间。编写Javascript代码,代码内容如图所示,并将该段代码复制到网页文件”sample.html“中标签”<head>"和“</head>之间,然后查看网页文件的显示内容。

在前端模块化的时候,不仅仅是js需要进行模块化管理,html有时候也需要模块化管理。这里就介绍下如何通过requirejs,实现html代码的模块化开发。

如何使用requirejs加载html

Reuqirejs有一个text的插件,它可以读取指定文件的内容,读取到的内容就是文本。

如何下载text插件

第一种方法,可以通过npm下载:

npm install requirejs/text

第二种方法,也可以直接去官方github上面直接下载。

直接拷贝内容到text.js中即可。

如何安装text插件

在requirejs的main.js中配置text插件的依赖即可,跟jquery差不多,只要保证能通过正常的加载方式加载到它就行。

requirejs.config({

baseUrl: './',

paths: {

'text':path+'/require/text',

...

},

shim: {

...

}

})

也可以直接放在baseUrl里面。

如何使用text

在目标模块中,按照下面的语法即可:

define(function(require){

var html = require("text!html/test.html")

console.log(html)

})

或者

define(["text!html/test.html"],function(html){

console.log(html)

})

如何进行html的模块化开发?

看过上面你已经会使用text了,但是仍然不知道怎么组织前端代码。

举个栗子:

博客园的网站页面会根据上方的导航跳转到不同的页面。如果是在单页面中,很容易想到原始的做法是,导航的按钮对应不同的div,点击那个按钮,就显示与之对应的div;其他的div则隐藏掉。

那么,前端的代码可能会这样:

<html>

<body>

<nav>

导航按钮1、导航按钮2、导航按钮3

</nav>

<div style="display:block">按钮1对应的页面</div>

<div style="display:none">按钮2对应的页面</div>

<div style="display:none">按钮3对应的页面</div>

</body>

</html>

这样的代码会很杂乱...而且前端Html会很长...不利于维护。

那么有了reuqirejs的text插件以后,就可以这样了:

<html>

<body>

<nav>

导航按钮1、导航按钮2、导航按钮3

</nav>

<div id="target"></div>

</body>

</html>

然后在对应的模块中:

$('#target').html(require("text!目标按钮对应的页面.html"))

这样就随性多了吧!前端代码也可以跟着模块一起有效的管理了!

不过需要注意的是:这种方式会导致Jquery绑定的事件失效——所以一定要在html()方法后面,重新绑定下事件。

比如说,现在有一个外部的html文件test.html,内容是:

<input type="button" value="外部文件按钮" />

<p>外部文件p标签</p>

现在在这个网页中加载test.html中的内容,这个网页的源码为:

<html>

<head>

    <meta http-equiv="Content-Type" content="text/html charset=utf-8" />

    <title></title>

    <script src="../Scripts/jquery-1.8.2.min.js"></script>

    <script type="text/javascript">

        function GetHtml() {

            $.ajax({

                type: "POST",

                url: 'Handler.ashx',      //提交到一般处理程序请求数据     

                success: LoadHtml

            })

        }

        function LoadHtml(data) {

            var div = document.getElementById("out")

            div.innerHTML = data//注意这里,要是想展示test.heml中的内容就用这个,如果显示源代码则用innerText

        }

    </script>

</head>

<body>

    <input type="button" value="加载外部Html文件内容" onclick="GetHtml()" />

    <div id="out">

    </div>

</body>

</html>

上面脚本中写的Handler.ashx是一个一般处理程序,代码是这样的:

public void ProcessRequest(HttpContext context)

{

    context.Response.ContentType = "text/plain"

    string html = GetOutsideContent("test.html")

    context.Response.Write(html)

}

public static string GetOutsideContent(string Path)

{

    try

    {

        StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath(Path), System.Text.Encoding.GetEncoding("utf-8"))

        string content = sr.ReadToEnd().ToString()

        sr.Close()

        return content

     }

     catch

     {

         return "错误"

     }

}

public bool IsReusable

{

    get

    {

        return false

    }

}

这是asp.net下的,如果你是使用其他语言的都大同小异,从后台读取文件中的内容,使用Ajax获取后台传递的文件中的内容,思路就是这样。