2014-04-10 2 views
0

목표에 액세스 할 수 없습니다 회원에 액세스 할 수 없습니다. 나는 주석 경고 메시지를 작성하기 위해 무엇을 해야할지하지 않습니다콘텐츠 스크립트 객체 메소드에

/// <reference path="UtilityFunctions.js" /> 
var playerElementId = "movie_player"; 
var youtube = new Youtube(); 

writePageInfo(youtube); 

function Youtube() //ctor 
{ 
    this.playerObj = getPlayer(); 
} 

Youtube.prototype.IsCurrentSite = function() 
{ 
    var url = location.href; 

    if (url.indexOf("youtube.com") > 0) 
    { 
    return playerObj != null; 
    } 

    return false; 
} 

function getPlayer() 
{ 
    return document.getElementById(playerElementId); 
} 

//debug 
function writePageInfo(youtubeObj) 
{ 
    //alert("From Youtube content script"); //this line is executed 
    alert("Youtube - debug: " + youtubeObj.IsCurrentSite()); //this line NOT: undefined function 
} 

:

는 또한 content_scripts에서 manifest.cs에 등록되어 다음 스크립트가 있습니다.

P.S. : 여러 개의 Youtube 페이지를 열면 여러 개체가 만들어 집니까?

답변

1

나는 당신이 무엇을하고 있는지 알지 못한다. 그러나 그 이유는 당신이 Youtube 생성자의 인스턴스를 만들고 사용하고 그 프로토 타입에 메소드를 추가하고 있기 때문이다. youtube 개체를 writePageInfo 함수에 전달하면이 새로운 메서드 (즉, IsCurrentSite)가 존재하지 않습니다.

는이 문제를 해결하려면, 당신은 프로토 타입 방법을 추가 AFTER writePageInfo(youtube)를 호출해야합니다

var youtube = new Youtube(); Youtube.prototype.IsCurrentSite = function() { var url = location.href; if (url.indexOf("youtube.com") > 0) { return playerObj != null; } return false; } writePageInfo(youtube); //moved here 

귀하의 질문에 대답, 각각의 브라우저 탭 (또는 창)은 자신의 자바 스크립트 환경을 가지고있다.

+0

적어도 개념적으로 모든 것을 위로 옮기는 것이 좋습니다. 그런 다음 인스턴스를 생성하기 전에 객체의 동작 방식을 정의합니다. – Xan