みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
環境はWindows7、FMpro Advanced13.0v5です。
ウェブビューワー内のjavascriptを使ってスクリプト「WantToDo」を実行したいと思っています。
ウェブビューワー内に直接 (<script></script>で囲まれた領域内に)
theURL = \"fmp://$\/" & Get ( ファイル名 ) & "\?script=WantToDo;
window.location = theURL ;
と書けば実行されます。
今回、HTML全体がウェブビューワーの制限文字数以上になるため、(また長くてバックスラッシュを入れるのが面倒なので、)フィールド「forHTML」を作ってそこにHTMLを書き込み、
"data:text/html," & ファイル名::forHTML
としています。
そして、フィールド「forHTML」内には上記と同じように
theURL = "fmp://$/" & Get ( ファイル名 ) & "?script=WantToDo;
window.location = theURL ;
書き込みましたが、スクリプトが実行されません。(「\"」は消しました。)
フィールド内に記入したHTML内のjavascriptから、スクリプトを実行するにはどうしたらよいでしょうか?
Offline
テキスト内の式は実行されませんよ!
・theURL = "fmp://$/" & Get ( ファイル名 ) & "?script=WantToDo;
↓
・var theURL = 'fmp://$/<<ファイル名>>?script=WantToDo';
に換えて
・"data:text/html," & Substitute(ファイル名::forHTML; ["<<ファイル名>>"; Get(ファイル名)])
で実行とか、
Offline
Hiro様
早速のアドバイスありがとうございました。迅速な対応に感謝いたします。
確かに、テキスト内の式は実行されないことに気付いていませんでした。
ただ、ご指摘のようにやってみましたが、スクリプトが実行されません。
実は試行錯誤の過程で、
var theURL = 'fmp://$/fileName.fmp12?script=WantToDo';
(fileNameは実際の当該ファイルの名称です)
ともしてみたのですが、うまくいきませんでした。
何か考えられる原因はありますか?
Offline
WinのWebビューアは、JavaScript:スキームが通るから、
次のURLで直打ちテストしてみるとか、
javascript:theURL='fmp://$/fileName.fmp12?script=WantToDo';location.href=theURL ;
...とここまで書いて、ハタと気が付きましたが、
・window.location = theURL ;
↓
・location.href=theURL;
と href が抜けているからでは?
Offline
location.href=theURL;
もやってみたのですが、うまくいきません。
「次のURLで直打ちテストしてみる」
というのは、ウェブビューワーに直接書いてみるという意味でしょうか?
ところで、「WinのWebビューアは、JavaScript:スキームが通るから」とありますが
うまくいったら、このファイルをサーバーで共有ファイルとして、FileMakerGoで使えるようにしたいと思っているのですが、
仮に現在やろうとしていることがWin上でうまくいったとしても、FileMakerGoではできないということでしょうか?
(それなら無理して頑張らないで、スクリプト実行ボタンを作って逃げようかと思います)
Offline
JS直打ちテストは、JSの記述内容が正しいかの動作実験です。
試行だけですから、とにかくテストしてみてください。
それもダメで、それ以外だと、「$」のURLエスケープ処理かな?
Offline
計算式で作成されたコードを確認してみては。
以下のようになっていれば、動作します。
data:text/html,<script>
theURL = "fmp://$/fileName.fmp12?script=WantToDo";
location.href= theURL ;
</script>
Last edited by qb_dp (2018-02-16 09:12:46)
Offline
Hiro様、qb_dp様
アドバイスありがとうございました。
テスト用にFMpro Advanced13.0v5で新しいファイルを作って、教えていただいたようにやってみたらうまくいきました。
で、作成中のファイルでやってみたらやはりうまくいきません。
よくよく考えてみたら、正確に伝えていなかった情報がありました。
作成中のファイルは、FMServer13でホストされているファイルでした。
そこで、
theURL = "fmp://$/fileName.fmp12?script=WantToDo";
の$ところを
theURL = "fmp://192.168.2.100/fileName.fmp12?script=WantToDo";
というように、IPアドレスに変えてみたら、「最終的に」うまくいきました。
(最終的にというのは、実は、将来のアップバージョンのテスト用に同じPC(サーバーでもあります)にFMpro Advanced16もインストールされていたので、ここでもつまづきました。これをアンインストールして、さらにFMpro Advanced13.0v5を修正インストールしてみたら、うまくいきました。)
伝える情報不足でお手を煩わせてしまい申し訳ありませんでした。
迅速にアドバイスいただき、心から感謝します。
(PCを触れる環境から遠ざかっていたため、投稿が遅くなり大変失礼しました。)
Offline
[ Generated in 0.008 seconds, 14 queries executed - Memory usage: 517.51 KiB (Peak: 522.05 KiB) ]