2012-02-28 29 views

回答

2

您需要能夠從瀏覽器運行新的進程。有幾種方法可以做到這一點。我將展示JNLP的方式來做到這一點。

創建一個JNLP文件如下:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://example/" href="jnlpTest.jnlp"> 
    <information> 
     <title>Some Title</title> 
     <vendor>Some Vendor</vendor> 
     <homepage href="http://example/" /> 
     <description>Some Description</description> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
     <j2se version="1.6+" /> 
     <jar href="jnlpTest.jar" /> 
    </resources> 
    <application-desc main-class="MainClass" /> 
</jnlp> 

從下面創建一個jnlpTest.jar:

public class MainClass { 
    public static void main(String args[]) { 
     Runtime rt = Runtime.getRuntime(); 
     try { 
      //TODO - different exec for Mac 
      rt.exec("explorer.exe"); 
     } catch (IOException e) { 
      //exception 
     } 

    } 
} 

:與清單:

Manifest-Version: 1.0 
Main-Class: MainClass 

登錄您的JNLP罐子:

keytool -genkey -keystore testKeys -alias jdc 
jarsigner -keystore testKeys jnlpTest.jar jdc 

將jar和jnlp文件放在Web服務器上。確保MIME類型JNLP的服務爲application/x-java-jnlp-file

參考用於製造JNLP:現在http://java.dzone.com/articles/java-web-start-jnlp-hello

當用戶點擊您的JNLP鏈接就會下載JAR和詢問是否它是確定運行。運行它將導致瀏覽器窗口打開。我知道這不是最好的解決方案,但任何解決方案都需要詢問用戶在他們的機器上執行代碼的權限。

+0

這東西模糊真的應該是一個評論,不是答案。如果Silverlight的Mac端口包含COM,我也會非常驚訝。 – millimoose 2012-02-28 16:16:10

+0

我開始在評論中提到這一點,但我確實想要添加更多信息,而不僅僅是「嘗試此網址」。這是一個起點,如果有幫助的話,如果不是不理我的答案。 – 2012-02-28 16:18:45

+0

@DMoses鏈接的文章在開頭說:「應該指出的是,這些功能只能在提升的權限外瀏覽器模式下使用,並且不能在瀏覽器中使用。」你是否完全與這個問題有關? – 2012-02-28 16:19:15

2

對於node-webkitNW.js),可以使用用戶...

var gui = require("nw.gui"); 

document.querySelector("[data-location]").onclick = function() { 
    gui.Shell.showItemInFolder(__dirname + '/content/project/' + this.textContent); 
}; 
相關問題