⚡
FileMaker WebView リンクタグで target='_blank' が効かない事への対応
Windows、FileMaker Pro 19.3.1以降で、WebViewのレンダリングにMicrosoft Edge WebView2 エンジンが使用されるようになりました。
弊害として、リンクタグで target='_blank' を指定しても外部ブラウザで開かなくなりました。
macOSは、外部ブラウザで開きます。
対策
target='_blank' の設定があるリンクをクリックした場合、FileMakerのスクリプトを実行し、「スクリプト:URLを開く」でリンクを開くようにします。
FileMaker スクリプトを作成
スクリプト名: fwv_OpenUrl(url)
URL を開く [ダイアログあり:オフ; Get(スクリプト引数)]
WEBビューア の設定
以下のJavaScriptを組み込み
WEBビューアでページ読み込み後、リンクタグにFileMaklerのスクリプトを実行するように設定されます。
<script>
const changeLinkForFm = () => {
/*target = '_blank' をFileMakerのスクリプト URLを開くで実行*/
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', function (e) {
if (this.target == '_blank') {
e.preventDefault();
FileMaker.PerformScriptWithOption('fwv_OpenUrl(url)', this.href, '3');
}
}, false);
}
};
window.addEventListener('DOMContentLoaded', function () {
changeLinkForFm();
});
</script>
htmlの例
<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='UTF-8'>
<meta name="color-scheme" content="light dark">
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Document</title>
</head>
<body>
<p><a href='https://fm-aid.com/bbs2/viewforum.php?id=2' target='_blank'>初心者のFileMaker pro Q&A↗</a></p>
<code><a href='https://fm-aid.com/bbs2/viewforum.php?id=2' target='_blank'>初心者のFileMaker pro Q&A↗</a></code>
<p><a href='https://fm-aid.com/markdownthing/' target='_blank'>FileMakerで画像付きリッチテキストドキュメントを作成↗</a></p>
<code><a href='https://fm-aid.com/markdownthing/' target='_blank'>FileMakerで画像付きリッチテキストドキュメントを作成↗</a></code>
<script>
const changeLinkForFm = () => {
console.log('changeLinkForFm');
/*target = '_blank' をFileMakerのスクリプト URLを開くで実行*/
var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', function (e) {
if (this.target == '_blank') {
e.preventDefault();
FileMaker.PerformScriptWithOption('fwv_OpenUrl(url)', this.href, '3');
}
}, false);
}
};
window.addEventListener('DOMContentLoaded', function () {
changeLinkForFm();
});
</script>
</body>
</html>
読み込み後のWEBビューアに対して以下のスクリプトを実行することでも、リンクタグをFileMakerのスクリプトで実行するように変更できます。
リンクがtarget='_blank'の場合、fwv_OpenUrl(url) を実行
Web ビューアで JavaScript を実行 [ オブジェクト名: "wv_"; 関数名:
"(()=>{
let links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', function (e) {
if (this.target == '_blank') {
e.preventDefault();
FileMaker.PerformScriptWithOption('fwv_OpenUrl(url)', this.href, '3');
}
}, false);
}
})"
]
リンクがhttp/httpsで始まる場合、fwv_OpenUrl(url) を実行
Web ビューアで JavaScript を実行 [ オブジェクト名: "wv_"; 関数名:
"(()=>{
let links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
links[i].addEventListener('click', function (e) {
console.log(this.href);
if (this.href.match(/^https?:\/\//)) {
e.preventDefault();
FileMaker.PerformScriptWithOption('fwv_OpenUrl(url)', this.href, '3');
}
}, false);
}
})"
]
Discussion