2016-08-18 5 views
1

Java 프로젝트에서 Karspersky 위젯을 사용하고 싶지만 java에서 html 코드를 실행하지 않았습니다. js 만 실행하려고하는데 오류가 발생합니다.javascript : "document"가 정의되지 않았습니다.

Caused by: <eval>:31ReferenceError: "document" is not defined

어떻게해야합니까?

public class MainClass { 
    public static void main(String[] args) { 
     ScriptEngineManager manager = new ScriptEngineManager(); 
     ScriptEngine engine = manager.getEngineByName("js"); 
     try { 
      FileReader reader = new FileReader("/home/havelsan/Desktop/widget.js"); 
      engine.eval(reader); 
      reader.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

내가 다른 방법으로 문제를 해결

// Cybermap v2 widget loader 
(function() { 

function setup_widget(div) { 
    var config = { 
     width: div.dataset.width || 640, 
     height: div.dataset.height || 640, 
     language: div.dataset.language || 'en', 
     theme: div.dataset.theme || 'dark', 
     type: div.dataset.type || 'dynamic' 
    }; 
    console.log("config.language >> " + config.language); 
    var iframe = document.createElement('iframe'); 

    var baseURI = 'https://cybermap.kaspersky.com/'; 
    iframe.src = baseURI + (config.type == 'dynamic' ? 'widget.html' : 'widget-static.html'); 

    iframe.style.width = config.width + 'px'; 
    iframe.style.height = config.height + 'px'; 
    iframe.style.border = 'none'; 

    iframe.onload = function() { 
     console.log("config.language >> " + config.language); 
     var msg = JSON.stringify({ config: config }); 
     iframe.contentWindow.postMessage(msg, '*'); 
    }; 
    console.log("config.language >> " + config.language); 
    div.appendChild(iframe); 
} 

var divs = document.querySelectorAll('.kas-cybermap-widget'); 
for (var i = 0; i < divs.length; ++i) { 
    setup_widget(divs[i]); 
} 

}()); 
+1

JavaScript 코드는 웹 페이지의 일부로 실행되도록 작성되었습니다. 웹 페이지의 컨텍스트 외부에서 실행할 수는 없습니다. 왜냐하면 '문서'와 이에 연결된 모든 항목 (예 : iframe, div 등)이 없기 때문입니다. – Jesper

+0

이런 방식으로 작동 할 방법이 없습니까? 또는 자바에서 html 페이지를 실행할 수 있습니까? – rdmzcn

+0

이 위젯에서 어떤 기능이 필요합니까? – nolan

답변

0

widget.js. 나는 JxBrowser을 사용했습니다. Jpanel의 JFrame과 함께 사용할 수 있습니다.

+0

안녕하세요, pls 답을 게시 할 수 있습니까? 솔루션 코드 – User

관련 문제