質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1216閲覧

IEのjavascript 実行エラーを回避したい

nieve

総合スコア33

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/08/17 03:53

下記のようなコードを組んでいます。

IEでは不都合なコードになっており、IEでも正しく動かすのではなく、別ブラウザを使って欲しい表示をjavascriptで組もうかと思ったのですが、
retun falseよりも後ろに書いてあるエラーが出てしまう部分が邪魔をして、IEのみの表示実行ができません。
できれば、IEでは実行したくない部分をIE判別のelse内に入れずに処理したいのですが、良い手はないでしょうか?

document.addEventListener('DOMContentLoaded', function() { if ( r isIE11 = !!window.MSInputMethodContext && !!document.documentMode ) { ~省略。別ブラウザへの促し表示~ return false; } let d = somedata ~省略~ hoge(d); function hoge(d) { ~省略~ IEでエラーが出るコード } }

IEでのエラー
※文字列連結に`文字列${変数}文字列'を使っている為のエラー

SCRIPT1014: 文字が正しくありません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/17 03:57

コピペするとエラーになるソースを提示ください r isIE11の時点でどのブラウザでもエラーになりませんか?
nieve

2020/08/17 04:01

> r isIE11の時点でどのブラウザでもエラーになりませんか? あ、、すみません。コピペミスです。 if ( isIE11 = !!window.MSInputMethodContext && !!document.documentMode ) { } になります。
nieve

2020/08/17 04:04

さらにコピペミスです。。 if ( !!window.MSInputMethodContext && !!document.documentMode ) { ~IEでやりたいこと~   return false; } で書いております。 繰り返し申し訳ございません。。
guest

回答3

0

自己解決

あまり凝った作りをJSでやるのが大変、そしてやりたかったことは別ブラウザへ促すテキストを表示したかっただけなので、
CSSの疑似要素で対応することにしました。

知見いただきありがとうございました。

@media all and (-ms-high-contrast: none){ #calendar { &:before { content: "申し訳ございませんが、ご利用のブラウザ(Internet Explore)には対応しておりません。別のブラウザよりご覧ください。"; display: block; margin: auto; text-align: center; max-width: 40em; } } }

投稿2020/08/17 04:22

nieve

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

isIE11にヒットしなくてもIE11でつかえないヒアドキュメントひ(?)構文を
ソース内にかいたら駄目です
ヒアドキュメントをやめるか、!isIE11の流れで追加でjs外部ソースを読み込むかの
どちらかが有効でしょう

投稿2020/08/17 04:16

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nieve

2020/08/17 04:19

ありがとうございます。。 NGになってしまうのですね。。。
yambejp

2020/08/17 04:50

どうしてもヒアドキュメント的なまとめた処理が必要なら おすすめはしませんがなんちゃってヒアドキュメント処理があります document.addEventListener('DOMContentLoaded', function() { var list=["aaa","bbb","ccc"]; var hoge=(function(){ /* <ul> <li>%s</li> <li>%s</li> <li>%s</li> </ul> */ }).toString().match(//*([\s\S]+?)*//m)[1].replace(/%s/g,function(){return list.shift()}); console.log(hoge) });
nieve

2020/08/17 07:26

なんというか、何したいのか見通し悪いですね。。 ならば、普通に文字列連結してHTML構成していったほうがよい感じですね。。。
guest

0

表示を促す部分だけ、独立したイベントハンドラで先に書いてみる、というのはどうでしょうか?

切り分けたところで、関数がないのではなく「文法的に解釈できない」ものである関係上、エラーは回避できないかと思います。ただし、別関数にすれば先に書いてエラーのない方だけ実行できるかもしれません。

投稿2020/08/17 03:58

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nieve

2020/08/17 04:19

下記を書いてみましたが、やはりだめでした。。。 ``` document.addEventListener('DOMContentLoaded', function() { if ( !!window.MSInputMethodContext && !!document.documentMode ) { return false; } }); document.addEventListener('DOMContentLoaded', function() { 実際にやりたいことあれこれ }); ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問