TypeScriptでwindow.locationを設定する


85

次のTypeScriptコードでエラーが発生します。

 ///<reference path='../../../Shared/typescript/jquery.d.ts' />
 ///<reference path='../../../Shared/typescript/jqueryStatic.d.ts' />

 function accessControls(action: Action) {
    $('#logoutLink')
        .click(function () {
            var $link = $(this);
            window.location = $link.attr('data-href');
        });

 }

次の場合、下線付きの赤いエラーが発生します。

$link.attr('data-href'); 

メッセージには次のように書かれています。

Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location'

これが何を意味するのか誰か知っていますか?

回答:


164

window.locationは文字列Location.attr('data-href')返すwhile型であるためwindow.location.href、文字列型にも割り当てる必要があります。そのためには、次の行を置き換えます。

window.location = $link.attr('data-href');

これのために:

window.location.href = $link.attr('data-href');

1
今日のブラウザでは、設定window.location = "some string"に特別な動作があることに注意してください。ここを参照してください:stackoverflow.com/questions/2383401/…-同じサイト、同じ起源、およびXHRの動作に関するコメントを参照してください。

27

あなたは逃したhref

標準、技術的には以下を含むオブジェクトをそのまま使用window.location.hrefwindow.locationます。

Properties
hash 
host 
hostname
href    <--- you need this
pathname (relative to the host)
port 
protocol 
search 

試してみてください

 window.location.href = $link.attr('data-href');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.