我想澄清一下,我已经知道如何通过设置布尔变量标志(例如:)dim FormIsLoaded as boolean
并在表单事件True
之后将其设置为来检查是否加载Load
了表单,以限制[Enum].Parse
导致异常的方法的使用在我的coden.
但这不是我要求的,这不是一个典型的问题,请继续阅读......
我有一个这样的事件处理程序:
''' <summary>
''' Indicates the resulting Batch command redirection.
''' </summary>
Private CommandRedirection As Reg2Bat.CommandRedirection =
Reg2Bat.CommandRedirection.Standard
Private Sub KryptonRadioButton_CommandRedirections_CheckedChanged(sender As Object, e As EventArgs) Handles _
KryptonRadioButton_CommandRedirection_Standard.CheckedChanged,
KryptonRadioButton_CommandRedirection_Error.CheckedChanged,
KryptonRadioButton_CommandRedirection_All.CheckedChanged,
KryptonRadioButton_CommandRedirection_None.CheckedChanged
If CBool(sender.checked) Then
CommandRedirection = [Enum].Parse(GetType(CMD.CommandRedirection),
CStr(sender.tag), True)
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
但是If
它给了我一个类型的错误,An unhandled exception of type 'System.InvalidOperationException' occurred in Program.exe
我确定发生错误是因为在事件处理程序尝试访问控件的值之前表单没有完全加载.
堆栈跟踪:
en System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult) …
Run Code Online (Sandbox Code Playgroud) 一般可以获取 pwa 应用程序的 onload 事件。我的意思是我们已经实现了自定义版本控制逻辑,以便根据数据库字段保持应用程序版本。(即清除 Service Worker 缓存)。这里的问题是逻辑几乎可以工作,但是当数据库中更新了新版本时,我们需要清除相应浏览器的缓存以触发更新。在更多调查中,我发现当 pwa 应用程序打开时,它会保留某种缓存图像,再次重新打开 pwa 应用程序不会触发应用程序的启动代码,而是从缓存加载应用程序。
那么是否有可能为 pwa 获得 onload 类型的事件?
出于测试目的,我在应用程序组件中添加了一些 alert(),但在重新打开 pwa 应用程序时没有触发
this.httpService.GetAppVersion(ver).subscribe(
res => {
if (res != null || res !== undefined) {
this.version = res.versionNumber;
ver = localStorage.getItem("appVersion");
if (ver === null || ver === undefined) {
localStorage.setItem("appVersion", "1.0");
ver = "1.0";
}
let localVersion = ver.split(".");
let incomingVersion = this.version.split(".");
let result = this.helperService.compareVersion(
localVersion,
incomingVersion
);
//alert("result : " + result);
if (result === 1) { …
Run Code Online (Sandbox Code Playgroud) React Native webview onLoad(), onLoadStart(), onLoadEnd() 都被调用了两次
在下面找到我的代码
<WebView
source={{
uri,
}}
// eslint-disable-next-line no-return-assign
ref={ref => (this.webview = ref)}
startInLoadingState
style={{ marginTop: 0, flex: 1 }}
renderLoading={() => this.displaySpinner()}
javaScriptEnabled
geolocationEnabled
injectedJavaScript={setTimeoutInjection}
onLoad={() => this.pageLoadEnd(renderTime)}
onLoadStart={() => {
Alert.alert('On load event', `Loading time : ${Date.now() - renderTime}`)
}}
onLoadEnd={() => {
Alert.alert('On load event End', `Loading time : ${Date.now() - renderTime}`)
}}
sharedCookiesEnabled
useWebKit
onNavigationStateChange={this._onNavigationStateChange.bind(this)}
/>
Run Code Online (Sandbox Code Playgroud)
我应该更改什么以便 onload() 事件仅被调用一次?
我需要在页面中动态包含和运行脚本.我正在使用图像onload事件:
<img src="blank.gif" onload="DoIt" />
Run Code Online (Sandbox Code Playgroud)
DoIt函数看起来像这样(只是这个例子):
this.onload=' ';this.src='image.jpg';
Run Code Online (Sandbox Code Playgroud)
我无法控制页面本身(我只控制页面将调用的HTML字符串),因此我需要在标记中明确包含DoIt函数.
我尝试使用匿名函数,但它不起作用:
<img src="blank.gif" onload="function(){this.onload=' ';this.src='image.jpg';}" />
Run Code Online (Sandbox Code Playgroud)
我应该只是内联编写脚本,如下所示:
<img src="blank.gif" onload="this.onload=' ';this.src='image.jpg';" />
Run Code Online (Sandbox Code Playgroud)
在这种情况下是否有任何限制(例如脚本长度)?
谢谢你的帮助!
使用CEF浏览器我尝试挂钩OnLoadEnd事件以遍历DOM树.
由于一些奇怪的原因,我得到了两次VisitDom.
procedure TForm1.FormCreate(Sender: TObject);
begin
FBrowser := TChromium.Create(Self);
FBrowser.Parent := TWinControl(Self);
FBrowser.OnLoadEnd := BrowserOnLoadEnd;
FBrowser.Load('http://google.com');
end;
procedure VisitDom(const Document: ICefDomDocument);
begin
ShowMessage(Document.Document.Name);
end;
procedure TForm1.BrowserOnLoadEnd(Sender: TObject;
const Browser: ICefBrowser; const Frame: ICefFrame; HttpStatusCode: Integer;
out Result: Boolean);
var
Visitor: TCefFastDomVisitor;
begin
if HttpStatusCode = 200 then
begin
Visitor := TCefFastDomVisitor.Create(VisitDom);
FBrowser.Browser.MainFrame.VisitDom(Visitor);
end;
end;
Run Code Online (Sandbox Code Playgroud)
知道为什么多次调用OnLoadEnd?
我有一个遗留站点的要求,我无法重新设计屏幕,我不能使用标头无缓存标签,我必须防止用户在他们退出并按下他们的后退按钮后看到缓存的屏幕.
我差不多要解决了(见下面的代码位)
当页面加载时,我使用JQuery AJAX函数调用Web应用程序并查看用户是否仍然登录.如果没有,用户将被重定向到登录屏幕
<html>
<head>
<!-- all the usual header stuff, plus links to the jQuery libaries, first script tag on page below -->
<script language = "javascript">
$.get("/acme/confirm_authentication",function(data){
if( data != "confirmed"){
location.href = "logout";
}
});
</script>
</head>
<body>
blah blah blah
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个解决方法的一件大事就是,在JQuery函数完成之前,我可以在瞬间完成内容.
有没有办法可以阻止页面加载/渲染,直到JQuery AJAX函数停止?
谢谢
更新:答案:
我修改了下面接受的答案,包括"cache:false"选项.在Firefox和Chrome中,通过后退按钮访问的页面的缓存副本将运行.ajax(),但会使用变量"data"的缓存副本,这会给我一个过时的答案.
$.ajax({
url: "/acme/confirm_authentication",
async:false,
cache: false,
success: function(data) {
if( data != "confirmed"){
location.href = "logout";
}
}
Run Code Online (Sandbox Code Playgroud)
});
我在这里做错了什么?为什么writeQuestions
不加载运行(不是onclick..)?
$(document).ready(function() {
$.getJSON("JavaScript/questions.json", function(data) {questions = data;});
$("#start").one("click" , writeQuestions);
writeQuestions();
});
Run Code Online (Sandbox Code Playgroud)
(该.one()
行在我的代码中被注释掉了)
当我这样做时:window.onload=writeQuestions;
它工作正常..
我需要确定哪个JS文件/行正在修改我页面上的元素.我想在这里找到一个大海捞针.例如,我正在挖掘35个.js文件,以找出哪个文件负责更改网页上的某些文本.这样一个简单的任务似乎太多了.
它可以使用jQuery或javascript以许多不同的方式更改它.方法未知.但它发生在页面加载上.
是否可以在Chrome(开发人员工具)中查看此信息?
当我输入这段代码时:
window.onload = function(){
var inputs = document.querySelectorAll("input[type=text]");
console.log(inputs.length);
for(var j=0; j<inputs.length; j++){
inputs[j].onclick = function(){
this.style.width = "500px";
}
}
}
Run Code Online (Sandbox Code Playgroud)
在 html 页面中,它工作得很好,但如果我将其放入外部 .js 文件中,for 循环永远不会启动,因为 input.length 等于 0,即使在调用脚本的页面中有大量输入。可能是什么问题呢?
更新:我发现代码在正常条件下可以工作,但事实并非如此:
从我读过的其他 SO 问题来看,似乎使用覆盖 onLoad 是一种更好的方法,而不是在构造函数中处理初始方法。
当我在代码中添加断点时,我发现 onLoad 方法正在被命中,但构造函数没有......这些发生的顺序是什么?
这对于自定义加载事件也是一样的
编辑:白痴是我的断点没有被击中的原因,但我仍然对何时调用加载覆盖有点困惑?
每当我使用该事件时,我都会收到一个javascript错误,指出"Object expected"指向包含onload事件的行.这是我网页的简单表示.
<html>
<head>
<script type='text/javascript' src='myScript.js'>
//script containing doSomething()
</script>
</head>
<body onload = "doSomething('stringArg', 0);"> //<--does not execute, throws error, EDITED for proper quotation
//body of site
<script type='text/javascript'>
//test call
doSomething('stringArg', 0); //<--executes just fine, no errors
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) onload-event ×11
javascript ×5
jquery ×2
winforms ×2
.net ×1
ajax ×1
angular7 ×1
c# ×1
chromium ×1
delphi ×1
delphi-xe2 ×1
dom ×1
inline ×1
onload ×1
react-native ×1
stack-trace ×1
tchromium ×1
vb.net ×1
versioning ×1
webview ×1