如何镜像使用服务器端JavaScript和RequireJS的站点?也就是说-强制应用程序识别已加载的站点?
由于应用程序使用JavaScript的方式,我正在为离线查看节省大量的时间 一些背景:如何镜像使用服务器端JavaScript和RequireJS的站点?也就是说-强制应用程序识别已加载的站点?,javascript,ember.js,requirejs,offline,offlineapps,Javascript,Ember.js,Requirejs,Offline,Offlineapps,由于应用程序使用JavaScript的方式,我正在为离线查看节省大量的时间 一些背景: 该站点用于渲染。它用于加载用于各种任务(如用户交互)的各种模块。它还使用了一个名为的工具,但我认为它只是用于报告 我无法访问远程服务器 我登录到该站点以获得访问权限 当站点完全加载时,当从Chrome查看源代码时,除了和其他一些锅炉板内容外,实际上并没有显示任何内容。相反,你有 <--EMBER_CLI_FASTBOOT_BODY--> 通过这种修改和注释,恼人的计时器页面现在加载了,我看到了图
<--EMBER_CLI_FASTBOOT_BODY-->
通过这种修改和注释,恼人的计时器页面现在加载了,我看到了图像和应用程序的音频播放器,但是没有工作的JavaScript交互。例如,页面有各种各样的元素,它们的行为类似于引导折叠。应用程序中控制该功能的部分是
define("site/mixins/interactions/reveal_content", ["exports", "jquery"], function(e, t) {
function n(e) {
this.el = e, this.interactionData = e.find(".interaction_data"), this.container = e.find(".interaction_content")
}
n.prototype = {
init: function() {
var e = (0, t.default)("<div />").append((0, t.default)(this.interactionData.find("td")[1]).detach()),
n = (0, t.default)('<div class="pointer" />').append((0, t.default)(this.interactionData.find("td")[0]).detach());
this.container = this.container.parent().find(".RevealContent"), this.container.append(n), this.container.append(e.hide()), n.click(function() {
(0, t.default)(e).slideToggle("slow")
}), n.find("a").click(function(e) {
e.preventDefault()
})
}
}, e.default = n
define(“站点/mixins/interactions/discover_content”、[“导出”、“jquery”]、函数(e、t){
函数n(e){
this.el=e,this.interactionData=e.find(“.interaction\u data”),this.container=e.find(“.interaction\u content”)
}
n、 原型={
init:function(){
var e=(0,t.default)(“”).append((0,t.default)(this.interactionData.find(“td”)[1]).detach(),
n=(0,t.default)(“”).append((0,t.default)(this.interactionData.find(“td”)[0]).detach());
this.container=this.container.parent().find(“.RevealContent”),this.container.append(n),this.container.append(e.hide()),n.click(函数(){
(0,t.默认)(e).滑动切换(“慢速”)
}),n.查找(“a”)。单击(函数(e){
e、 预防默认值()
})
}
},e.default=n
下面是其中一个元素的HTML:
<div class="interaction_content RevealContent" style="min-height: 400px; width: 400px;">
<div class="pointer">
<div id="area49275747_95" class="component image-component float-left clear-none booted">
<img src="somelink.html" title="" alt="" style="padding-right: 10px;" width="58" height="59">
</div>
<p class="body" id="area49275747_96"><em><strong><a href="#">Workshop Answers 5.<br></a></strong></em></p>
</div>
<div style="display: none;"><p class="body" id="area49275747_104"><strong><em>6th and 7th </em></strong></p></div>
</div>
第六和第七
现在,我已经确认这个HTML在加载页面的远程版本上是相同的。请注意,对于这个特定的div,您是如何在类名中“引导”的:
<div id="area49275747_95" class="component image-component float-left clear-none booted">
我认为这告诉了应用程序(理论上)所有内容都已加载/启动。因此HTML都已存在,但不知何故,应用程序仍不允许任何JavaScript功能正常工作,我就是不明白为什么……可能是因为我干扰了登录刷新功能,其他一些功能正在中断,如事件侦听器未加载。我只是不知道。或者可能是我丢失了我一直在逐步编写代码,试图理解RequireJS到底是什么,它是否把事情搞砸了,或者这个新的遗迹是否是罪魁祸首,等等
我曾考虑编写一个脚本,将所有交互转换为标准jQuery和HTML5,但这将是一项艰巨的工作。我真的希望我能让所有这些RequireJS模块定义在脱机环境中工作
应用程序文件很大,大约1.4MB。如果有人感兴趣,我可以发布,但我想也许有人能从我在这里描述的内容中理解问题的核心
免责声明:我不是开发人员。我对编码有一两点了解,但这种企业级应用超出了我目前的理解。(列表项中的代码块需要双缩进,即八个空格而不是四个空格)。我打赌操作没有绑定到元素的事件属性,因为它们在HTML中没有表示为属性。例如,在ember模板中,您定义了如下操作:
Glimmer,ember使用的模板引擎,设置{action}返回的函数
helper作为按钮
元素的onclick
属性。这与您的方法不符。因此您正在失去功能。我感觉ember或requirejs或其他东西导致功能崩溃。我发表了相关帖子(),包括一些HTML作为示例,现在我正试图让纯jQuery工作……我认为,一旦离线页面的一个交互部分工作,我就会理解如何修改所有其他交互相关代码。。。
<div class="interaction_content RevealContent" style="min-height: 400px; width: 400px;">
<div class="pointer">
<div id="area49275747_95" class="component image-component float-left clear-none booted">
<img src="somelink.html" title="" alt="" style="padding-right: 10px;" width="58" height="59">
</div>
<p class="body" id="area49275747_96"><em><strong><a href="#">Workshop Answers 5.<br></a></strong></em></p>
</div>
<div style="display: none;"><p class="body" id="area49275747_104"><strong><em>6th and 7th </em></strong></p></div>
</div>
<div id="area49275747_95" class="component image-component float-left clear-none booted">