2016-12-28 27 views
0

私のWebブラウザコントロールにイントラネットサイトが表示されます。管理者がiisの設定を変更してie11をエッジモードで強制的にレンダリングするまで、うまくいきました。今、私のWebブラウザコントロールは、スクリプトエラー "オブジェクトがプロパティまたはメソッドattachEventをサポートしていません"と表示されます。WebブラウザコントロールがattachEvent()で動作しません

はい、attachEventはie11では廃止されています。いいえ、私はウェブページのコードを制御できません。いいえ、管理者に再度設定を変更させることはできません。

ie9からie10までのすべてのコードを使用して、ブラウザエミュレーションでアプリケーション用のレジストリ設定を使用しようとしました。いずれも効果がありませんでした。

スクリプトエラーを回避してログインを継続するような方法でWebブラウザコントロールをレンダリングする方法を教えてもらえますか?ログインページで不正な資格情報を使用した場合、エラーが発生しないため、ログインが成功するとattachEventの呼び出しを呼び出す必要があります。私のアプリケーションが動作していたとき、ページはデフォルトで9互換になっていました。しかし、それは管理者のIIS設定は無効にしているようだ。

+0

ウェブサイトがInternet Explorer 11で正しく表示されているかどうかを確認する必要があります。OSからIE11を開き、サイトに移動して結果を確認します。正しく表示されている場合は、 'WebBrowser'コントロールが正しく表示されることを意味します。ブラウザのエミュレーションを[this post](http://stackoverflow.com/a/38514446/3110834)のように正しく設定することで問題を解決できます。 。 –

+0

それは動作しません。私はすでにそれを試しましたが、vshost.exe拡張子はありません。あなたの提案ごとにもう一度試しても、まだ動作しません。これは問題ではないと私は思うが、WebページコードでattachEventを呼び出すとスクリプトエラーが発生し、これを続行できなくなる。 Prehaps私の説明はあまり明確ではなかった、申し訳ありません。 – StillANewb

+0

それは通常のie11ブラウザで動作します。 – StillANewb

答えて

0

あなたは、コードを変更することはできませんので、私はattachEvent/detachEvent ポリフィルの実施をお勧めします、この

HTMLElement.prototype.attachEvent = function(event, cb) { 
    var onEventName = "on" + event, 
    obj = this; 

    if (obj.addEventListener) { 
    obj.addEventListener(event, cb, false); 

    } else if (obj.attachEvent) { 
    obj.attachEvent(onEventName, cb); 
    } else { 
    var currentEventHandler = obj[onEventName]; 
    obj[onEventName] = function() { 
     if (typeof currentEventHandler === 'function') { 
     currentEventHandler.apply(obj, arguments); 
     } 
     cb.apply(obj, arguments); 
    }; 
    } 
}; 

HTMLElement.prototype.detachEvent = function(event, cb) { 
    var onEventName = "on" + event, 
    obj = this; 

    if (obj.removeEventListener) { 
    obj.removeEventListener(event, cb, false); 
    } else if (obj.detachEvent) { 
    obj.detachEvent(onEventName, cb); 
    } else { 
    delete obj[onEventName]; 
    } 
}; 

のようにここでworking plnkr demonstration(スニペットを使用しないための謝罪は)です。私はthis old gitを使ってこのコードに基づいていました。

コードは不完全であり、本番用ではありません。 HTMLElement、attachEvent、detachEventが存在するかどうかをチェックしていません。

関連する問題