cyes 发表于 2018-1-29 13:38:28

增加window.onload全局js代码功能


目前的功能只支持单个页面添加“加载时执行”代码,且一些系统页面是不提供“加载时执行”代码功能的,逐个页面添加真的是很麻烦。

实际应用中有一些代码是需要全局打开页面就执行的代码,比如统计页面访问情况的的场景。

希望新版本中能增加全局window.onload的JS代码功能,包括系统内置页面,这样可以让我们做一些特殊需求的时候更加灵活。


感谢葡萄城开发活字格这么优秀的快速开发工具。:hjyzw:

Noel 发表于 2018-1-29 14:11:40

活字格页面是无刷新的,只是url变化而已。所以window.onload,只是在页面打开时才起作用。目前有变通的方法来模拟window onload.
function historyStatePushed(){
    setTimeout(function(){
      alert(Forguncy.Page.getPageName()); // 替换您需要的window onload的代码
    }, 1000);
}

var originPushState = window.history.pushState;
window.history.pushState = function(){
    originPushState.apply(this, arguments);
    historyStatePushed();
};附件中也有此示例。

我们也会将您的需求反馈给开发团队。谢谢您的支持。

cyes 发表于 2018-1-29 17:24:41

Noel 发表于 2018-1-29 14:11
活字格页面是无刷新的,只是url变化而已。所以window.onload,只是在页面打开时才起作用。目前有变通的方法 ...

不好使,系统内置页面不好用,且第一次加载时不能自动执行。

Noel 发表于 2018-1-30 11:32:41

cyes 发表于 2018-1-29 17:24
不好使,系统内置页面不好用,且第一次加载时不能自动执行。

第一次加载就用window onload.

cyes 发表于 2018-1-30 20:40:06

Noel 发表于 2018-1-30 11:32
第一次加载就用window onload.

每个页面手动添加window.onload很麻烦的。

再就是系统页面是没有window.onload的。

既然提供了全局JS,如果不能自动全局调用,那还要全局JS干嘛?单个页面分别写JS不就好了?

Noel 发表于 2018-1-31 08:50:05

cyes 发表于 2018-1-30 20:40
每个页面手动添加window.onload很麻烦的。

再就是系统页面是没有window.onload的。


活字格将全局的js文件加入html页面中,浏览器中js文件运行的原理在html页面打开时执行一次。
所谓的全局,活字格做了特殊处理,让每个活字格页面可以调用。

前面我提供的解决方面可能没太讲清楚,我理一下:
用window.onload 加上 我前面的活字格示例中脚本一起使用。
window.onload 用于第一次加载时。
window.history.pushState(请见示例中的代码) 用于页面切换时。
这两个调用写到全局的js中,不用在每个页面中调用。

你原始需求已经加到需求列表中,我们会考虑实现的。

Noel 发表于 2018-1-31 08:56:35

我把这示例优化了一下,让它支持第一次页面加载。请见附件。

Simon.hu 发表于 2018-1-31 09:56:25

:mj72:

cyes 发表于 2018-1-31 10:21:01

Noel 发表于 2018-1-31 08:56
我把这示例优化了一下,让它支持第一次页面加载。请见附件。

感谢

Simon.hu 发表于 2018-2-5 17:33:44

感谢二位的精彩,解决!
页: [1]
查看完整版本: 增加window.onload全局js代码功能