以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 一条代码的逻辑没看懂 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104825) |
-- 作者:sky-18 -- 发布时间:2017/8/6 8:09:00 -- 一条代码的逻辑没看懂 Dim
fl
As
String = "d:\\web\\"
&
e.path \'合成含路径的文件名
这是帮助文件里关于移动开发的代码。 不过想了半天都没想明白。 就是那个if语句,如果文件存在则发送文件,如果不存在则按html语句生成网页。这是什么逻辑啊?如果文件存在,按代码逻辑网页还不显示了? 还是我思路哪里不对了? |
-- 作者:sky-18 -- 发布时间:2017/8/6 9:22:00 -- 刚才继续往后看,发现后面的代码都是这样写的。 看来是我哪里没搞对了。 老师能不能指点一下。我有点短路了 |
-- 作者:有点甜 -- 发布时间:2017/8/6 11:11:00 -- 网页的元素,比如 <img src=\'abc.jpg\'> 是需要下载才能看到的。
会给服务器发送一个请求,请求abc.jpg文件,服务要把这个文件下载,用代码 e.WriteFile(fl)
实际上会触发两次httprequest,第一次生成网页,第二次下载图片。 |
-- 作者:hgzvip -- 发布时间:2017/11/9 20:18:00 -- 菜鸟一枚, 我把代码改了一下来测试(增加了四个MessageBox): Dim fl As String = "d:\\web\\" & e.path \'合成含路径的文件名 MessageBox.Show(fl) \'显示路径 If filesys.FileExists(fl) \'如果是请求一个已经存在的文件 MessageBox.Show("1") e.WriteFile(fl) \'则发送此文件 Else MessageBox.Show("2") Dim sb As New StringBuilder sb.Appendline("我想显示一个图片<br/><br/>") sb.AppendLine("<img src=\'abc.jpg\'>") e.WriteString(sb.ToString()) MessageBox.Show("3") End If 然后在浏览器中加载的时候,弹窗是这样一个顺序: d:\\web\\【浏览器空白】 → 2【浏览器空白】 → 3 【浏览器出现文字‘我想显示一个图片’,没有图片】 → d:\\web\\abc.jpg 【浏览器只有文字】 → 1 【只有文字】 → 【浏览器出现图片】 照这样看,代码是先合并了一个不完整的路径“d:\\web\\”,然后执行了“Else”,出现了文字,没有图片,并在这里获得了一个e.path,获取了一个完整的路径“d:\\web\\abc.jpg”,最后又执行一次,在“If”中显示图片,然后结束。 看帮助确实看不太明白。 在两个地方回了这个贴,多一点见光的机会,希望对大家有帮助。
|
-- 作者:有点甜 -- 发布时间:2017/11/9 20:23:00 -- 嗯嗯,理解不了,那就加入msgbox一个个弹出就好了。
|
-- 作者:hgzvip -- 发布时间:2017/11/9 20:37:00 -- 再回头看帮助文件《我想显示一个图片》,突然理解了文中所说的: 浏览器其实是分两步来显示这个网页的: 1、首先获取网页内容: 我想显示一个图片<br/> <img src=\'abc.jpg\'> 2、然后浏览器解析网页内容,发现要显示一个图片"abc.jpg",如是又向服务器发送访问请求: http://127.0.0.1/abc.jpg 正如版主所言,httprequest被触发了两次: 第一次是我们访问127.0.0.1的时候,浏览器获得了网页的代码: 我想显示一个图片<br/> <img src=\'abc.jpg\'> 然后浏览器开始解析这些内容并试图显示,发现有一个图片要显示(第二行),于是又去访问一次127.0.0.1,这次是带着完整的路径去的,所以能把图片下载下来并显示了。 这样理解不知道对不对 |
-- 作者:有点甜 -- 发布时间:2017/11/9 21:17:00 -- 是的,正确。 |
-- 作者:sky-18 -- 发布时间:2018/3/19 0:56:00 -- 正解!! |