我的移动网站提供外部链接,例如YouTube。 根据浏览器的不同,它会在网络浏览器或相应的应用程序上打开。
但是我想强制在当前浏览器而不是应用程序中打开链接。
示例-当我打开“ https://m.youtube.com”之类的链接时,Chrome移动浏览器始终会打开已安装的Youtube App;
答案 0 :(得分:0)
这个流行于2011年的GitHub Gist(在底部附近的注释中添加了2018年的更新代码)是用于将HTML文档加载到WebViews中的,但似乎是您想要的:https://gist.github.com/kylebarrow/1042026
使用的技术是拦截超链接的点击,取消默认导航(这将导致显示“在YouTube中打开?”提示),然后通过设置window.document.location.assign
进行导航(不是< / strong>与window.location
相同)。我不是Mobile Safari专家,但是我怀疑如果设置了document.location
而不是window.location
,Mobile Safari不会提示在应用中打开。
将此代码放入脚本函数中,该脚本函数将在文档DOM加载后运行(即DOMContentLoaded
或在呈现的HTML末尾的内联脚本中运行)。
const isMobileSafari = ( ( ua ) => ua.match(/iPad/) || ua.match(/iPhone/) )( window.navigator.userAgent );
if( isMobileSafari ) {
const hyperlinks = document.querySelectorAll( 'a:link' );
for( let anchor of hyperlinks ) anchor.addEventListener( 'click', onHyperlinkClickPreventAppOpen );
}
function onHyperlinkClickPreventAppOpen( ev ) {
const el = ev.target;
if( el.href && ( el.href.startsWith( "http:" ) || ( el.href.startsWith( "https:" ) ) {
ev.preventDefault();
window.document.location.assign( el.href );
}
}
如果要拦截在文档加载后添加的超链接中的点击,请执行以下操作:
document.addEventListener( 'click', onDynamicHyperlinkClickPreventAppOpen );
function onDynamicHyperlinkClickPreventAppOpen ( ev ) {
const el = ev.target;
el = el.closest( 'a:link' ); // In case the 'click' event was raised by a descendant of an <a>
if( !el ) return;
const fakeEvent = { target: el, preventDefault: ev.preventDefault };
onHyperlinkClickPreventAppOpen( fakeEvent );
}
答案 1 :(得分:0)
启动新的快捷方式: 目标:“ C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe” https://news.sky.com/ 在所有浏览器上都可以轻松完成工作,例如Ia是老式的html ....:)