精华内容
下载资源
问答
  • java动态生成HTML文件

    万次阅读 2016-12-05 16:23:41
    在eclipse中,用java动态生成html文件

    在eclipse中,用java动态生成html文件。

    //用于存储html字符串
    StringBuilder stringHtml = new StringBuilder();
    try{
       //打开文件
       PrintStream printStream = new PrintStream(new FileOutputStream("./Data/test.html"));
    }catch(FileNotFoundException e){
       e.printStackTrace();
    }
    //输入HTML文件内容
    stringHtml.append("<html><head>");
    stringHtml.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=GBK\">");
    stringHtml.append("<title>测试报告文档</title>");	
    stringHtml.append("</head>");
    stringHtml.append("<body>");
    stringHtml.append("<div>hello</div>");
    stringHtml.append("</body></html>");
    try{
           //将HTML文件内容写入文件中
           printStream.println(stringHtml.toString());
    }catch (Exception e) {
    	
        e.printStackTrace();
    }

    注意:生成html文件的需要需要注意meta头部的charset的配置。要根据所在项目的编码格式来定,

                具体可以参考我的另一篇博文: java生成动态html文档为乱码的问题解决

    展开全文
  • 读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。2.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。首先在ASPX对应的CS文件中引入using...
    1. 程序实现功能:
    2. 1.读取数据,点解“获取”按钮动态生成XML格式的文档,并把生成的文档放在TEXTBOX或者生成一个XML文件。
    3. 2.点击“浏览”按钮,把获取到的XML格式文档,转换成HTML,在浏览器中显示。
    4. 首先在ASPX对应的CS文件中引入using System.Xml;
    5. int m = 0; int loop = 0;
    6. //根据指定的获取深度DEPTH获取用于生成XML文档的数据
    7. private int initData(string[] parent, string[] guid, string[] path, string[] name, ChannelCollection cc,int depth)
    8. {
    9.   foreach (Channel channel in cc)
    10.   {
    11.      parent[m] = channel.Parent.Guid;
    12.      guid[m] = channel.Guid;
    13.      path[m] = channel.Path;
    14.      name[m] = channel.Name;
    15.      m = m + 1;
    16.     if (channel.Channels.Count!=0 &&loop<depth)
    17.      {
    18.        ChannelCollection c = channel.Channels;
    19.        ++loop;
    20.        initData( parent, guid, path, name, c,depth);
    21.      }
    22.    }
    23.    return m;
    24. }
    25. //点击“获取XML内容“按钮执行的事件
    26. protected void ButtonGetXml_Click(object sender, EventArgs e)
    27. {
    28. ChannelCollection cc = selectedChannel.Channels;
    29. string[] parent =new string[1000];
    30. string[] guid = new string[1000];
    31. string[] path = new string[1000];
    32. string[] style = new string[1000];
    33. string[] name = new string[1000];
    34. int i=0;
    35. int depth = int.Parse( DropDownListGetDepth.SelectedValue);
    36. //根据指定的获取深度DEPTH获取用于生成XML文档的数据
    37. i=initData(parent, guid, path, name, cc,depth);
    38. //创建XML 文档对象
    39. document = new XmlDocument();
    40. //创建XML节点元素
    41. XmlElement channelsElement = document.CreateElement("Channels");
    42. document.AppendChild(channelsElement);
    43. for (int k = 1; k <=i; k++)
    44. {
    45. channelsElement.AppendChild(document.CreateElement("CHANNEL"));
    46. }
    47. //根据元素节点名获取元素节点
    48. XmlNodeList nodelist = document.GetElementsByTagName("CHANNEL");
    49. int size = nodelist.Count;
    50. for (int k = 0; k < size; k++)
    51. {
    52. XmlNode node = nodelist.Item(k);
    53. XmlElement elementNode = (XmlElement)node;
    54. //elementNode.SetAttribute("guid",guid[k]);设置元素属性
    55. elementNode.AppendChild(document.CreateElement("PARENT"));
    56. elementNode.AppendChild(document.CreateElement("GUID"));
    57. elementNode.AppendChild(document.CreateElement("PATH"));
    58. elementNode.AppendChild(document.CreateElement("NAME"));
    59. }
    60. XmlNodeList nodelistParent = document.GetElementsByTagName("PARENT");
    61. int sizeParent = nodelistParent.Count;
    62. for (int k = 0; k < sizeParent; k++)
    63. {
    64. XmlNode node = nodelistParent.Item(k);
    65. XmlElement elementNode = (XmlElement)node;
    66. //用初始化后的数据生成对应元素节点的文本节点
    67. elementNode.AppendChild(document.CreateTextNode(parent[k]));
    68. }
    69. XmlNodeList nodelistGuid = document.GetElementsByTagName("GUID");
    70. int sizeGuid = nodelistGuid.Count;
    71. for (int k = 0; k < sizeGuid; k++)
    72. {
    73. XmlNode node = nodelistGuid.Item(k);
    74. XmlElement elementNode = (XmlElement)node;
    75. elementNode.AppendChild(document.CreateTextNode(guid[k]));
    76. }
    77. XmlNodeList nodelistPath = document.GetElementsByTagName("PATH");
    78. int sizePath = nodelistPath.Count;
    79. for (int k = 0; k < sizePath; k++)
    80. {
    81. XmlNode node = nodelistPath.Item(k);
    82. XmlElement elementNode = (XmlElement)node;
    83. elementNode.AppendChild(document.CreateTextNode(path[k]));
    84. }
    85. XmlNodeList nodelistName = document.GetElementsByTagName("NAME");
    86. int sizeName = nodelistName.Count;
    87. for (int k = 0; k < sizeName; k++)
    88. {
    89. XmlNode node = nodelistName.Item(k);
    90. XmlElement elementNode = (XmlElement)node;
    91. elementNode.AppendChild(document.CreateTextNode(name[k]));
    92. }
    93. // document.Save("/icbc/newxml.xml");//可以保存为XML文件,位置在C:/icbc/newxml.xml
    94. //创建用于保存内容的字符串里
    95. StringBuilder sb = new StringBuilder();
    96. //输出流指向字符串
    97. XmlWriter writer= XmlWriter.Create(sb);
    98. //XML文档把内容写到字符串里
    99. document.WriteContentTo(writer);
    100. writer.Flush();
    101. //让页面中的文本框显示XML文档内容
    102. TextBoxContent.Text=sb.ToString() ;
    103. }
    104. //点击”预览“按钮,转到XML生成HTML的页面
    105. protected void ButtonYuLAN_Click(object sender, EventArgs e)
    106. {
    107. //XmlDocument xml = new XmlDocument();
    108. if (TextBoxContent.Text == null || TextBoxContent.Text == "")
    109. {
    110. Response.Write("<script>alert('请先点击获取内容');</script>");
    111. return;
    112. }
    113. Session["xmlTextBoxContent"] = TextBoxContent.Text;
    114. Response.Write("<script>window.open('PreExploerXMLMenu.aspx')</script>");
    115. }
    116. //'PreExploerXMLMenu.aspx.CS的内容如下
    117. using System;
    118. using System.Data;
    119. using System.Configuration;
    120. using System.Collections;
    121. using System.Web;
    122. using System.Web.Security;
    123. using System.Web.UI;
    124. using System.Web.UI.WebControls;
    125. using System.Web.UI.WebControls.WebParts;
    126. using System.Web.UI.HtmlControls;
    127. using System.Xml;
    128. using System.IO;
    129. using System.Text;
    130. public partial class Module_ChannelInfoManage_PreExploerXMLMenu : System.Web.UI.Page
    131. {
    132. protected void Page_Load(object sender, EventArgs e)
    133. {
    134. //创建XmlDisplay类的实例
    135. XmlDisplay XmlDisplayDemo = new XmlDisplay();
    136. //得到XML内容,申明为字符串用于生成 StringReader
    137. string xmlcontent=(string )Session["xmlTextBoxContent"];
    138. //生成在网页上保留静态文本的位置
    139. Literal LT = new Literal();
    140. LT.Text = XmlDisplayDemo.LoadDocument(new StringReader(xmlcontent));
    141. this.Panel1.Controls.Add(LT);
    142. }
    143. //这个类读入并处理XML文件
    144. public class XmlDisplay
    145. {
    146. public string LoadDocument(StringReader sr)
    147. {
    148. XmlReader xmlReader = null;
    149. StringBuilder html = new StringBuilder();
    150. try
    151. {
    152. //创建XMLTextReader的实例。
    153. xmlReader = XmlReader.Create(sr);
    154. //处理XML文件
    155. html.Append(ProcessXml(xmlReader));
    156. }
    157. catch (XmlException ex)
    158. {
    159. html.Append("发生一个XML异常:" + ex.ToString());
    160. }
    161. catch (Exception ex)
    162. {
    163. html.Append("发生一个普通异常:" + ex.ToString());
    164. }
    165. finally
    166. {
    167. if (xmlReader != null)
    168. xmlReader.Close();
    169. }
    170. return html.ToString();
    171. }
    172. //处理XML数据的方法,用于控制生成HTML文件的格式
    173. private string ProcessXml(XmlReader xmlReader)
    174. {
    175. StringBuilder temp = new StringBuilder();
    176. int i = 1;
    177. temp.Append("<table border=1>");
    178. //XML读取器找到”NAME“的标记元素
    179. xmlReader.ReadToFollowing("NAME");
    180. do{
    181. if (i == 1) temp.Append("<tr>");
    182. temp.Append("<td>");
    183. //xml读取器的位置向前移动,指到 文本元素内容
    184. xmlReader.Read();
    185. //读取文本元素内容到字符串中
    186. temp.Append(xmlReader.Value);
    187. temp.Append("</td>");
    188. //一行显示10列数据
    189. if ((i%10==0)) temp.Append("</tr><tr>");
    190. i++;
    191. while (xmlReader.ReadToFollowing("NAME"));
    192. temp.Append("</tr></table>");
    193. return temp.ToString();
    194. }//结束ProcessXML方法
    195. }
    196. }
    197. 来源:aaronbai的blog
    展开全文
  • 动态Jsp文件生成对应Html文件

    千次阅读 2015-01-25 09:51:35
    动态Jsp文件生成对应Html文件,因为浏览器显示的数据都是response流输出的(response.getWriter().print()) 所以可以通过修改response的getWriter()方法,将文件输出流传入PrintWriter中 完整的项目可以下载:...

    1.在 index.jsp文件中,加入一条超链接,用来访问将 Jsp 转换成Html的servlet

    <a href="servlet/GeneraticServlet">把template文件夹下的jsp都生成静态html文件</a>

    2. 在项目根目录下新建一个template文件夹,将要转换成静态html的 jsp页面放入,我新建的的文件为MyJsp1.jsp, MyJsp2.jsp, MyJsp3.jsp, 内容类似

      <body>
         这是第<%=1 %> 个jsp页面 <br>
      </body>

    3. GeneraticServlet这个servlet中使用 RequestDispatcher 访问多个Jsp


    public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		//将Jsp页面转换成html,存储在项目路径下,source为要转换的jsp, target为生成的html文件名
    		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/servlet/JspToHtml?source=MyJsp1.jsp&target=1.html");
    		//发送request的请求,请求成功后,程序返回到此处继续执行,这是用dispatcher.include()方法的主要原因,可以发出多次reqeust的请求
    		dispatcher.include(request, response);
    		//生成第二个html
    		dispatcher = getServletContext().getRequestDispatcher("/servlet/JspToHtml?source=MyJsp2.jsp&target=2.html");
    		dispatcher.include(request, response);
    		//生成第三个html
    		dispatcher = getServletContext().getRequestDispatcher("/servlet/JspToHtml?source=MyJsp3.jsp&target=3.html");
    		dispatcher.include(request, response);
    		
    		response.sendRedirect("../index.jsp?responsecode=1");
    	}


    4. 注意到 ,真正将Jsp转换为Html的为JspToHtml这个Servelt , 参数 source是template文件夹下要转换成html的 jsp文件,target为生成的html的文件名

    JspToServelt的代码如下


    	response.setContentType("text/html;charset=utf-8");
    		
    		String source =request.getParameter("source");
    		String target = request.getParameter("target");
    		
    		
    		try {
    			//获取jsp响应内容,第一个参数为文件路径
    			String content = getJspOutput("../template/"+source,request,response);
    			//将得到的响应内容写入一个html文件中 
    			//获得项目根目录地址
    			String rootPath = this.getServletConfig().getServletContext().getRealPath("/");	
    			//创建文件
    			File file = new File(rootPath+target);
    			if(!file.exists())
    			{
    				file.createNewFile();
    			}
    			else
    			{
    				//先删除原文件
    				file.delete();
    				file.createNewFile();
    			}
    			//在文件中写入内容
    			FileOutputStream fos = new FileOutputStream(rootPath+target);  
    			
    			
    			fos.write(content.getBytes());
    			fos.flush();
    			fos.close();
    			System.out.println(file.getAbsolutePath()+"生成成功");

    5 注意到,getJspOutput("../template/"+source,request,response) 改方法也是自己定义的,第一个参数为要转换的jsp文件的路径

    public static String getJspOutput(String jsppath, HttpServletRequest request, HttpServletResponse response)
    			throws Exception
    		{	
    			
    			WrapperResponse wrapperResponse = new WrapperResponse(response);
    			//浏览器显示的数据都是response流输出的(response.getWriter().print())
    			//所以可以通过修改response的getWriter()方法,将文件输出流传入PrintWriter中
    			//getWriter方法是容器自己调用的,我们只需要重写 wrapperResponse的getWriter方法就可以
    			request.getRequestDispatcher(jsppath).include(request, wrapperResponse);
    			//获取自定义文件流的内容
    			return wrapperResponse.getContent();
    		}


    6. WrapperResponse 自己定义的,继承了  HttpServletResponseWrapper  ,用来包装HttpServletResponse


    import java.io.ByteArrayOutputStream;   
    import java.io.IOException;   
    import java.io.PrintWriter;   
    import java.io.UnsupportedEncodingException;   
    import javax.servlet.http.HttpServletResponse;   
    import javax.servlet.http.HttpServletResponseWrapper;   
    
    
    public class WrapperResponse extends HttpServletResponseWrapper {  
    	
    	
       private MyPrintWriter tmpWriter;   
       private ByteArrayOutputStream output;   
       
       public WrapperResponse(HttpServletResponse httpServletResponse) {   
          super(httpServletResponse);   
          output = new ByteArrayOutputStream();   
          tmpWriter = new MyPrintWriter(output);   
       }   
       
       public void finalize() throws Throwable {   
          super.finalize();   
          output.close();   
          tmpWriter.close();   
       }   
       public String getContent() {   
          try {   
             tmpWriter.flush();   //刷新该流的缓冲,详看java.io.Writer.flush()   
             String s = tmpWriter.getByteArrayOutputStream().toString("utf-8");   
             //此处可根据需要进行对输出流以及Writer的重置操作   
           //比如tmpWriter.getByteArrayOutputStream().reset()   
             return s;   
          } catch (UnsupportedEncodingException e) {   
             return "UnsupportedEncoding";   
          }   
       }   
      
       //覆盖getWriter()方法,使用我们自己定义的Writer   
       public PrintWriter getWriter() throws IOException {   
          return tmpWriter;   
       }   
       public void close() throws IOException {   
          tmpWriter.close();   
       }   
      
       //自定义PrintWriter,为的是把response流写到自己指定的输入流当中   
       //而非默认的ServletOutputStream   
       private static class MyPrintWriter extends PrintWriter {   
          ByteArrayOutputStream myOutput;   //此即为存放response输入流的对象   
      
          public MyPrintWriter(ByteArrayOutputStream output) {   
             super(output);   
             myOutput = output;   
          }   
          public ByteArrayOutputStream getByteArrayOutputStream() {   
             return myOutput;   
          }   
       }   
    }   


    因为浏览器显示的数据都是response流输出的(response.getWriter().print())

    所以可以通过修改response的getWriter()方法,将文件输出流传入PrintWriter中

    getWriter方法是容器自己调用的,我们只需要重写 wrapperResponse的getWriter方法就可以


    完整的项目可以下载:http://download.csdn.net/detail/ch717828/8393449


    参考文章:http://blog.csdn.net/guo_rui22/article/details/2170750

    http://xifangyuhui.iteye.com/blog/840518  

    http://pignut-wang.iteye.com/blog/104096   




    展开全文
  • html动态加载js文件

    千次阅读 2016-09-22 13:46:14
    </pre><p></p><p>$.getScript()方法加载的js文件不会出现在web的source(浏览器加载的文件),它是用一次加载一次。也就是scriptAry数据永远不变。$.getScript()中的第二个参数是函数,这个回调函数,当顺利加载时...

    一共有三种方法:

    1.jquery方法:

    源码:

    var headTag = document.getElementsByTagName('head')[0]; 
    var scriptAry=headTag.getElementsByTagName("script");
    var f=true;
    for(var i=0;i<scriptAry.length;i++){
    	var src="patch/"+type+".js";
    	if(src==scriptAry[i].src){
    		f=false;
    		break;
    	}
    }
    if(f){
    //	get操作就是把文件内容原封不动的获取来,复制给一个变量再进行操作。
    	//这种方法是加载js,但是不导入。加载完就没了。
    	//也就是说:f永远为true。scriptAry永远也不会多起来。
    	$.getScript("patch/"+type+".js",function(){  //加载test.js,成功后,并执行回调函数
    //		console.log("加载js文件");
    		eval('_'+type+'.addNewXml_to_xml_and_submit(json);');
    	});		
    }
    else{
    	eval('_'+type+'.addNewXml_to_xml_and_submit(json);');
    }
    </pre><p></p><p>$.getScript()方法加载的js文件不会出现在web的source(浏览器加载的文件),它是用一次加载一次。也就是scriptAry数据永远不变。$.getScript()中的第二个参数是函数,这个回调函数,当顺利加载时执行回调函数中的内容。</p><p></p><p></p><p>2.使用document.write方法</p><p>源码:</p><p></p><pre code_snippet_id="1893935" snippet_file_name="blog_20160922_3_3701765" name="code" class="javascript">document.write('<link rel="stylesheet" type="text/css" href="' + path + '/resources/css/ext-all' + suffix + '-debug.css"/>');
    document.write('<script type="text/javascript" src="' + path + '/ext-all' + (rtl ? '-rtl' : '') + '.js"></script>');

    通过这种方法加载的js,在加载完之后页面是能调用新加js里面的东西,但是页面会跳为全空白,document.write()方法会在写入前清除原页面的所有内容,也就相当于覆盖的意思

    至少我试过是这样的。


    3.使用appendChild方法

    源码:

    var head = document.getElementsByTagName('HEAD').item(0);
    //这种方法是导入js文件加载。
    //或  var head = document.getElementsByTagName('HEAD')[0];
    var script= document.createElement("script"); 
    script.type = "text/javascript"; 
    script.id = "javascript②"+type; 
    script.src="patch/"+type+".js"; 
    head.appendChild(script);
    用这种方法加载js文件,scriptAry数组是会变化的,但是,appendChild方法有一定的延迟,如果在这个之后直接调用新加的js中的内容时会报错的,报:未定义。



    展开全文
  • 在eclipse中用java动态生成html文件,出现了乱码的情况。如下图所示:    进行问题的排查,我进行了一下步骤:  1、查看一下我所在工程的编码格式:  打开Project->Properties,由下图可以知道我整个工程的编码...
  • C#之动态生成html文件

    千次阅读 2015-02-03 13:43:37
    首先是指定一个模板,模板的关键位置用占位符表示。如下: 然后是创建一个辅助类用于动态生成html ...动态生成html用到IO流操作 ...所谓的动态生成html文件,这里使用的是文件流操作,把文件数据读取出来
  • html 动态加载 JS文件

    千次阅读 2015-02-28 14:05:35
    例1 重新加载js文件 function loadJs(file) { var head = $("head").remove("script[role='reload']"); $("" + "").attr({ role: 'reload', src: file, type: 'text/javascript' }).appendTo(head); } 例...
  • asp.net怎么把bootstrap富文本编辑的内容动态生成html文件
  • 开源超美css动态背景 可直接引入html文件使用 含注释、可更改 1.背景样式 本背景为动态蜘蛛网背景。 上图: 2.如何在html里面引用,作为html背景 1文件目录 放在同一目录下 2 在index.html内引用 &lt;html&...
  • <script src='' id="s1"></script> <script language="javascript"> s1.src="test.js" </script> 但是不能实际改变页面的效果
  • web(HTML)动态添加js外部文件方式

    千次阅读 2020-07-02 21:12:10
    文档对象模型(DOM)允许你使用JavaScript 动态创建HTML的几乎全部文档内容。其根本在于,<script>元素与页面其他元素没有什么不同:引用变量可以通过DOM进行检索,可以从文档中移动、删除,也可以被创建. ...
  • HTML字符转换为DOM节点并动态添加到文档中 将字符串动态转换为DOM节点,在开发中经常遇到,尤其在模板引擎中更是不可或缺的技术。 字符串转换为DOM节点本身并不难,本篇文章主要涉及两个主题: 1 字符串转换...
  • 项目中,有一个需求是动态的合同模板,最终可生成pdf文件。项目架构是springboot 1、在pom.xml里添加thymeleaf的starter和生成pdf的jar <dependency> <groupId>org.springframework.boot</groupId&...
  • Html动态添加css js文件

    千次阅读 2017-12-06 09:53:04
    function loadjscssfile(filename,filetype){ if(filetype == "js"){ var fileref = document.createElement('script'); fileref.setAttribute("type","text/javascript"...
  • html页面动态加载js文件

    千次阅读 2016-11-18 10:35:48
    在页面加载完成后再加载js文件 window.onload = function(){ var head = document.getElementsByTagName('head')[0]; var script= document.createElement("script"); script.type = "text/javascript"; ...
  • JSP动态生成html文件实例。

    千次阅读 2007-08-09 10:41:00
    若您留意过各种大型网站,类似于sohu,sina等大型门户站点,...若是动态的,它的一个页面中那么多的信息需要多少次的数据库查询呢?他们如何管理好自己的那么庞大的信息量还要保证速度和质量呢?您可能会说他们有更好更
  • 通过js动态添加需要浏览的pdf地址 var options = { height: "550px", pdfOpenParams: {view: 'FitV', page: '0' }, name:"mans", fallbackLink: "您的浏览器暂不支持此pdf,请下载最新的浏览器</p>" }; ...
  • SpringBoot 中使用 freemarker 模板文件动态生成/导出 word 文档
  • 方式一:打开你的网站的nginx配置文件,然后找到:“location ~ \.php$ {”,再把其中的\.php修改为:“\.php|\.html”,保存后重启nginx即可。 方式二:同上,打开配置文件找到:“location ~ \.php$ {”,然后把...
  • “首页可以直接用PHP文件动态显示的,方便的地方就是你在做修改的时候,不需要生成html文件。修改方法,编辑打开根目录下的index.php,用下面代码全部替换里面的所有内容。 if(!file_exists(dirname(__FILE__).'/...
  • HTML文档解析

    千次阅读 2018-11-12 13:49:13
    2.1&lt;!DOCTYPE! html&gt;...它是html5标准网页声明,全称为Document Type HyperText Mark-up Language,意思为文档种类为超文本标记性语言或超文本链接标示语言,现在是这个简洁形式,...
  • 根据html模板动态生成html

    千次阅读 2018-05-22 14:13:15
    public class GeneratingHTML { /** * 读取HTML文件 *@param filePath *@return */ public static String retrieveHtmlFile(String filePath) {   File file = new File(filePath);  ...
  • l 定义  ² 静态网页  静态网页:对于动态网页而言,是指没有后台... 静态网页是标准的HTML文件,它的文件扩展名是htm或html,可以包含文本、图像、声音、FLASH动画、客户端脚本和ActiveX控件及JAVA小程序等。尽
  • 3、写入到您要生成的静态页面里 如果是动态的(?id=$id),在php页面处理时可以根据接收条件的不同替换不同的内容生成不同的静态页(2page.html),注意模版还是那个模版并没有改变! 下面是一个小偷程序的小例子:...
  • DHTML是Dynamic HTML的简称,中文译为“动态超文本标记语言”,主要用途是提**TML页面的交互性和可操作性。它是建立在传统HTML基础上的客户端动态技术,是一种技术的总称,它通过HTML、VBScript、JavaScript邮和CSS...
  • jquery 动态插入html

    千次阅读 2019-03-13 11:29:51
    首先把jq相关的文件copy到项目,并引用相关的文件 一、jq相关文件引用 &lt;script src="../../../dist/js/jquery-3.3.1.js"&gt;&lt;/script&gt; &lt;script src="../../../...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 843,879
精华内容 337,551
关键字:

动态html文档