问题标签 [onload]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
browser - 找不到合适的文档类型,似乎只能在怪癖模式下工作
出于某种原因,我的网页在没有 doctype 的情况下似乎可以正常工作,但如果我完整指定任何内容,则不会。
我已经通过各种不同的模板没有任何成功,即代码验证器然后不喜欢我的代码和/或它不起作用。
唯一的“我逃脱了”是下面的第一行,但即使那样我也无法指定任何细节,即它只是通常的 doctype 声明的开始。
该页面是Drop down Stackoverflow question的结果。
此外(以及为什么我要指定类型的原因,因为这可能会导致问题)该页面仅在 IE 中完全有效。它只在 Chrome 中加载第一个下拉菜单,在 Firefox 中不加载任何内容。
我很欣赏上面不是太清楚,但代码很短,所以我希望如果指向正确的方向,我可以自己完成它和/或更好地描述其他问题。
javascript - iFrame src 更改事件检测?
假设我无法控制 iframe 中的内容,有什么方法可以通过父页面检测到其中的 src 更改?也许某种onload?
如果 iframe src 与以前相同,我最后的手段是进行 1 秒的间隔测试,但是这样做会很糟糕。
如果有帮助,我正在使用 jQuery 库。
javascript - ie7重新加载后onclick事件不起作用
我正在使用 Javascript 来动态创建我的部分页面内容。从 window.onload 事件调用生成一组 img 标记的例程。这些 img 标签被分配了属性,包括 onclick 事件。img 标签承载缩略图图像,单击时会更改主视图 div 中图像的 src 属性。
在 FF 3.5 中一切正常。我可以重新加载页面,动态生成的 onclick 事件继续按预期触发。在 IE7 中一切正常,直到我重新加载页面。此时,硬编码到 xhtml 部分的事件继续按预期工作,并且动态生成的 img 标签显示在页面上,但它们的 onclick 事件无法工作。
如何让 IE7 在重新加载时实现动态生成的点击事件?
jsf - 在页面加载时调用 JSF 托管 bean 操作
有没有办法在加载页面时执行 JSF 托管 bean 操作?
如果这是相关的,我目前正在使用 JSF 1.2。
dom - window.onload 似乎在加载 DOM 之前触发(JavaScript)
我在window.onload
和document.onload
事件方面遇到了麻烦。我读到的所有内容都告诉我,在 DOM 完全加载其所有资源之前,这些不会触发,这对我来说似乎没有发生:
我在 Chrome 4.1.249.1036 (41514) 和 IE 8.0.7600.16385 中尝试了以下简单页面,结果相同:都显示消息“失败!”,表示myParagraph
未加载(因此 DOM 似乎不完整)。
我在外部 .js 文件中使用了比这更复杂的脚本,但这说明了问题。我可以通过window.onload
将计时器设置为运行半秒来使其工作doThis()
,但这似乎是一个不雅的解决方案,并且没有回答为什么window.onload
似乎没有按照每个人所说的那样做的问题。另一种解决方案是设置一个计时器来检查 DOM 是否已加载,如果没有,它将在半秒后调用自身(因此它将继续检查直到 DOM 加载完毕),但这对我来说似乎过于复杂。
有没有更合适的事件可以使用?
javascript - scrollTo 滚动到页面顶部
我有以下 Javascript 代码。
加载页面时,它会滚动到正确的位置。当我单击链接运行该功能时,页面滚动到页面顶部。
我该如何解决?
data-binding - MVVM 在 ViewModel 构建期间或之后加载数据?
我的一般问题是如标题所述,最好在 ViewModel 构建期间或之后通过一些 Loaded 事件处理加载数据?
我猜答案是在通过一些 Loaded 事件处理构建之后,但我想知道 ViewModel 和 View 之间如何最干净地协调?
以下是有关我的情况和我要解决的特定问题的更多详细信息:
我正在使用 MVVM Light 框架以及 Unity for DI。我有一些嵌套视图,每个都绑定到相应的 ViewModel。ViewModel 通过 Laurent Bugnion 放入 MVVM Light 的 ViewModelLocator 理念绑定到每个 View 的根控件 DataContext。这允许通过静态资源查找 ViewModel 并通过依赖注入框架(在本例中为 Unity)控制 ViewModel 的生命周期。它还允许 Expression Blend 查看与 ViewModel 相关的所有内容以及如何绑定它们。
所以无论如何,我有一个父视图,它有一个 ComboBox 数据绑定到其 ViewModel 中的 ObservableCollection。ComboBox 的 SelectedItem 也绑定(双向)到 ViewModel 上的一个属性。当 ComboBox 的选择发生变化时,这是为了触发其他视图和子视图中的更新。目前,我正在通过 MVVM Light 中的消息系统来完成此操作。当您在 ComboBox 中选择不同的项目时,这一切都很好,并且符合预期。
但是,ViewModel 在构建期间通过一系列初始化方法调用获取其数据。如果我想控制 ComboBox 的初始 SelectedItem 是什么,这似乎只是一个问题。使用 MVVM Light 的消息传递系统,我目前已将其设置为 ViewModel 的 SelectedItem 属性的设置器是广播更新的设置器,而其他感兴趣的 ViewModels 在其构造函数中注册消息。看来我目前正在尝试在构建时通过 ViewModel 设置 SelectedItem,这还不允许构建和注册子 ViewModel。
在 ViewModel 中协调 SelectedItem 的数据加载和初始设置的最简洁方法是什么?我真的很想坚持尽可能少地在 View 的代码隐藏中添加合理的内容。我想我只需要一种方法让 ViewModel 知道什么时候加载了东西,然后它可以继续加载数据并完成设置阶段。
提前感谢您的回复。
javascript - How to get scrollTop of page just after page onload event?
I know how to get the scrollTop
of a page, I use this simple JS function (code copied around):
This works and my problem is the following: I tried to add it in the page onload event
On page load I get ZERO (which make sense), but the problem is that I get ZERO even if I scroll the page and then reload it without touching the scrollbar.
It seems like the browser does:
- loads page
- calls my
GetScrolledTop()
(so obviously shows ZERO) - then scrolls the page to where it was before.
Do you know how to get the scolledTop
after the step 3?
I mean how to get the scrolledTop
AFTER the browser scrolled the page?
(maybe without using a timer)
javascript - Firefox 3.6.x 不会触发我的 onload 事件
我有一个 Firefox 3.6.2 问题(3.5.x 工作得很好)。
这是代码:
Firefox 3.6.2 不再触发我的 onload 事件,有什么想法吗?
javascript - 使用小书签跟踪包裹
我正在尝试编写一个小书签来跟踪邮件中的包裹。首先它检查跟踪页面是否打开,如果没有,它会在新选项卡中打开它,然后将表单的值设置为跟踪号。最后,它提交表单。到目前为止,我无法做的是在小书签打开一个新选项卡的情况下设置表单的值。
这是我所拥有的:
javascript: (function(){
var trackingNumber = "/*tracking number*
/";
var a = document.forms.trackingForm;
if (' http://fedex.com/Tracking ' == document.location) {
trackingForm.trackNbrs.value = trackingNumber;
document.forms.trackingForm.submit();
}
else {
window.open(' http://fedex.com/Tracking ');
this.window.onload = function(){
//好像是这个问题
trackingForm.trackNbrs.value = trackingNumber;
onload(document.forms.trackingForm.submit());
}
}
})();
有任何想法吗?