想通过本地的html文件来访问Internet并保存获得的页面,该如何作?奉上100分。

Riverlei 2002-05-30 10:37:17
下面是我作试验的本地html文件:

<HTML>
<body>
<script>
var childwin=window.open("http://www.sina.com.cn");
</script>
<p id=mxh>父窗口</p>
<input value=子窗口的内容 type=button onclick="alert(childwin.document.body.innerText)">
</body>
</HTML>

试验失败。
浏览器提示“拒绝访问”。
经定位,应该是childwin的document不能访问。
这个问题有解么?

已经在网上找了很多类似的例子,但它们只对本地机器上的页面可以(也就是子窗口打开的是本地的html文件),如果是其他server上的就不行了。

很急!bow!


...全文
42 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQKiKi 2002-06-27
  • 打赏
  • 举报
回复
net_lover(孟子E章) ( ) 信誉:195

我试验过了,还是说拒绝访问呀!
Riverlei 2002-05-30
  • 打赏
  • 举报
回复
成了!谢谢!
你很热心也很专业啊。向你学习!
对了,怎么给分?
孟子E章 2002-05-30
  • 打赏
  • 举报
回复
<script language="vbscript">
Function bytes2BSTR(vIn)

Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
strReturn = ""

For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next

bytes2BSTR = strReturn

End Function
</script>
<script language="javascript">
var xmlhttp=new ActiveXObject("Msxml2.xmlhttp")
xmlhttp.open("GET","http://www.sina.com.cn/",false)
xmlhttp.send()
alert(bytes2BSTR(xmlhttp.ResponseBody))
</script>

你也可以保存成本地文件
孟子E章 2002-05-30
  • 打赏
  • 举报
回复
<script language="vbscript">
Function bytes2BSTR(vIn)

Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
strReturn = ""

For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next

bytes2BSTR = strReturn

End Function
</script>
<script language="javascript">
var xmlhttp=new ActiveXObject("Msxml2.xmlhttp")
xmlhttp.open("GET","http://www.sina.com.cn/",false)
xmlhttp.send()
alert(bytes2BSTR(xmlhttp.ResponseBody))
</script>

你也可以保存成本地文件
Riverlei 2002-05-30
  • 打赏
  • 举报
回复
xmlhttp是什么啊?
我很菜,能不能将你的思路讲一讲?
孟子E章 2002-05-30
  • 打赏
  • 举报
回复
用xmlhttp
qiushuiwuhen 2002-05-30
  • 打赏
  • 举报
回复
以前的代码中有这么一句

var len=xmlhttp.responseText.length
if(len>20000&&!confirm(len+",是否继续?"))return;
body=bytes2BSTR(xmlhttp.responseBody);

就可以看出bytes2BSTR的效率问题
孟子E章 2002-05-30
  • 打赏
  • 举报
回复
慢原因有2:
1,网速慢,请求时
2,执行效率的解码函数

你可以用C#写,简单而且很快。

using System.IO;
using System.Net;
using System.Text;

private void button1_Click(object sender, System.EventArgs e)
{
byte[] buf = new byte[38192];
WebRequest request = WebRequest.Create(textBox1.Text);
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
int count = resStream.Read(buf, 0, buf.Length);
textBox2.Text = Encoding.Default.GetString(buf, 0, count);
resStream.Close();
}
孟子E章 2002-05-30
  • 打赏
  • 举报
回复
慢原因有2:
1,网速慢,请求时
2,执行效率的解码函数

你可以用C#写,简单而且很快。

using System.IO;
using System.Net;
using System.Text;

private void button1_Click(object sender, System.EventArgs e)
{
byte[] buf = new byte[38192];
WebRequest request = WebRequest.Create(textBox1.Text);
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
int count = resStream.Read(buf, 0, buf.Length);
textBox2.Text = Encoding.Default.GetString(buf, 0, count);
resStream.Close();
}
qiushuiwuhen 2002-05-30
  • 打赏
  • 举报
回复
如果本地用php的话,原理见下文章

http://www.csdn.net/Develop/read_article.asp?id=13836

就用不着bytes2BSTR了。。。
qiushuiwuhen 2002-05-30
  • 打赏
  • 举报
回复
嗯,宁可直接用ResponseText,也不解析ResponseBody
如果不是本地访问网络,用#dafault#download最好
blues-star 2002-05-30
  • 打赏
  • 举报
回复
因为执行了bytes2BSTR(vIn)这个转换函数?
blues-star 2002-05-30
  • 打赏
  • 举报
回复
孟子,我怎么感觉速度挺慢的啊?
blues-star 2002-05-30
  • 打赏
  • 举报
回复
我们的BOSS就是这样热心,这样专业,

晕,原来你不会给分。

你要向他学习,先要向我学习怎么给分,嘿嘿^_~
seabell 2002-05-30
  • 打赏
  • 举报
回复
通过“我的帖子”找到这篇帖子,点“管理”

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧