Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
85e96fb4
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
85e96fb4
编写于
6月 17, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixing click intercept and other event hookup for iframe based webviews
上级
36ca1f4a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
31 addition
and
24 deletion
+31
-24
src/vs/workbench/contrib/webview/browser/pre/main.js
src/vs/workbench/contrib/webview/browser/pre/main.js
+31
-24
未找到文件。
src/vs/workbench/contrib/webview/browser/pre/main.js
浏览文件 @
85e96fb4
...
...
@@ -381,6 +381,7 @@
newFrame
.
contentDocument
.
write
(
'
<!DOCTYPE html>
'
);
newFrame
.
contentDocument
.
write
(
newDocument
.
documentElement
.
innerHTML
);
newFrame
.
contentDocument
.
close
();
hookupOnLoadHandlers
(
newFrame
);
}
const
contentDocument
=
e
.
target
?
(
/** @type {HTMLDocument} */
(
e
.
target
))
:
undefined
;
if
(
contentDocument
)
{
...
...
@@ -388,17 +389,6 @@
}
});
newFrame
.
contentWindow
.
onbeforeunload
=
()
=>
{
if
(
isInDevelopmentMode
)
{
// Allow reloads while developing a webview
host
.
postMessage
(
'
do-reload
'
);
return
false
;
}
// Block navigation when not in development mode
console
.
log
(
'
prevented webview navigation
'
);
return
false
;
};
const
onLoad
=
(
contentDocument
,
contentWindow
)
=>
{
if
(
contentDocument
&&
contentDocument
.
body
)
{
// Workaround for https://github.com/Microsoft/vscode/issues/12865
...
...
@@ -429,24 +419,41 @@
}
};
clearTimeout
(
loadTimeout
);
loadTimeout
=
undefined
;
loadTimeout
=
setTimeout
(()
=>
{
function
hookupOnLoadHandlers
(
newFrame
)
{
clearTimeout
(
loadTimeout
);
loadTimeout
=
undefined
;
onLoad
(
newFrame
.
contentDocument
,
newFrame
.
contentWindow
);
},
200
);
newFrame
.
contentWindow
.
addEventListener
(
'
load
'
,
function
(
e
)
{
if
(
loadTimeout
)
{
loadTimeout
=
setTimeout
(()
=>
{
clearTimeout
(
loadTimeout
);
loadTimeout
=
undefined
;
onLoad
(
e
.
target
,
this
);
}
});
onLoad
(
newFrame
.
contentDocument
,
newFrame
.
contentWindow
);
},
200
);
newFrame
.
contentWindow
.
addEventListener
(
'
load
'
,
function
(
e
)
{
if
(
loadTimeout
)
{
clearTimeout
(
loadTimeout
);
loadTimeout
=
undefined
;
onLoad
(
e
.
target
,
this
);
}
});
// Bubble out link clicks
newFrame
.
contentWindow
.
addEventListener
(
'
click
'
,
handleInnerClick
);
newFrame
.
contentWindow
.
onbeforeunload
=
()
=>
{
if
(
isInDevelopmentMode
)
{
// Allow reloads while developing a webview
host
.
postMessage
(
'
do-reload
'
);
return
false
;
}
// Block navigation when not in development mode
console
.
log
(
'
prevented webview navigation
'
);
return
false
;
};
// Bubble out link clicks
newFrame
.
contentWindow
.
addEventListener
(
'
click
'
,
handleInnerClick
);
}
if
(
!
FAKE_LOAD
)
{
hookupOnLoadHandlers
(
newFrame
);
}
// set DOCTYPE for newDocument explicitly as DOMParser.parseFromString strips it off
// and DOCTYPE is needed in the iframe to ensure that the user agent stylesheet is correctly overridden
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录