Office中国论坛/Access中国论坛

标题: 让静态网页“Duang”起来——记录集的另类用法 [打印本页]

作者: roych    时间: 2015-3-23 17:00
标题: 让静态网页“Duang”起来——记录集的另类用法
本帖最后由 roych 于 2015-3-24 16:55 编辑

一般来说,html静态网页的交互作用——弱弱地问一句,有交互性吗?——如果前面留意过我写的那两个jQuery例子,估计大家可能还是会觉得有些交互性的,尽管比较差。写得比较好的应该算是TodayNew的东北乱炖了。

不过,遗憾的是,这个例子常常会因为Access的版本出现一些问题(用Access Office 2010 64位和Access 2013 32位调试过,均出错),大概跟documentComplete事件有关系。按我的理解是,可能由于JavaScript有阻塞元素下载的机制(必须编译完了才能下载下一个元素),而预定义的接口变量尚未能完成编译,导致出现“找不到属性或方法(438)”错误。此外,跟IE的安全机制也有一定的关系。运行Javascript时,部分版本Access引用的Webbrowser控件会出现黄色的警告栏,同样会引起上述错误。解除了安全机制(允许运行),然后才会再次加载页面元素。所以,从这一点看,应该是DownloadComplete事件之后才算完成页面的装载的。——但把documentComplete移到DownloadComplete,同样未能彻底解决438出错的问题。

这些都是题外话了。那么这个问题是不是真的无法解决呢?其实也不完全是。现在,我这里就提供一个解决的思路——让Access作为数据库后台,把前端交给JavaScript。这似乎听起来感觉“Duang Duang”的,但它却是可行的,因为有ActiveXObject。ActiveXObject是微软的一个自动化组件(Automation object),包含了我们常用的一些组件(例如文件系统对象的Scripting Runtime,记录集,甚至Excel等应用程序…),在JavaScript里使用起来跟我们用VBA来编写没太大差别。不过还是存在几个问题:
如果出于安全性的话,据说可以将Access文件的扩展名改为asp,以避免被文件被盗链下载。
JavaScript是客户端脚本,需要确定客户端装了完整版本的Access。——如果能够确保用Access做壳的话,这应该不是问题。
ActiveXObject是微软的组件,需要客户端使用IE打开。——对于这一点,个人建议,用Webbrowser进行装载页面即可。
该说的我都说了。最后再强调下,这里旨在提供一个思路,希望对于各位想把界面处理得更美观的版友能够有所裨益(有了这一点,再加上一些jQuery插件,做出一个漂亮的界面应该不成问题)。下面的文件请用IE打开test.html,然后点击按钮,即可看到下面的效果:
[attach]55977[/attach]

[attach]55988[/attach][attach]55989[/attach]——这个ASP其实是mdb文件^_^。
如果用IE打开无显示,请留下以下设置(安全设置为默认的“中-高”,如果是“高”的话,请改回来):
[attach]55979[/attach]







作者: wzl8007    时间: 2015-3-23 17:38
我的是win7,,打不开网页呀?
作者: 风中漫步    时间: 2015-3-23 17:44
网页能打开,但没有记录装载
斑竹是在什么环境中测试的?
作者: tmtony    时间: 2015-3-23 17:45
roych,最近jquery示例高产啊
作者: roych    时间: 2015-3-23 17:48
本帖最后由 roych 于 2015-3-23 17:49 编辑
风中漫步 发表于 2015-3-23 17:44
网页能打开,但没有记录装载
斑竹是在什么环境中测试的?

我的是Win7+IE11,大开挖网页后点击按钮。不过不太建议使用IE6,太老了。——顺便说下,如果禁用了JavaScript,那肯定是不行的。
作者: wzl8007    时间: 2015-3-23 17:54
能打开,点击没反应
作者: wzl8007    时间: 2015-3-23 17:59
点击读取数据没有反应
作者: wzl8007    时间: 2015-3-23 17:59
我是360浏览器
作者: roych    时间: 2015-3-23 18:04
wzl8007 发表于 2015-3-23 17:59
我是360浏览器

360是不支持的。您可以右击,在“打开方式”里选择IE试试看。
作者: wzl8007    时间: 2015-3-23 18:07
好了,能打开了!
作者: roych    时间: 2015-3-23 18:08
tmtony 发表于 2015-3-23 17:45
roych,最近jquery示例高产啊

额,站长过奖了。
作者: tmtony    时间: 2015-3-23 18:13
360浏览器 有很多不兼容

作者: 魂之挽歌    时间: 2015-3-23 18:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: roych    时间: 2015-3-24 11:06
tmtony 发表于 2015-3-23 18:13
360浏览器 有很多不兼容

360只是开发出一个浏览器而已,应该没有提供什么插件的接口。
所以,这个例子也只能结合Webbrowser来处理。这样的话,可以限定使用IE内核。过一段时间准备把DataTables插件结合这个做个实例发上来,大体思路已经打通了。不过最近比较忙
作者: 风中漫步    时间: 2015-3-24 14:52
ie测试结果:未知运行时错误.这句:document.getElementsByTagName('tbody')[0].innerHTML=openCnn("test.html","db.mdb","Tbl_Test");
作者: winshao    时间: 2015-9-1 16:39
学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3