如何在reactjs中使用java小程序
How to use java applet in reactjs
我正在尝试将特定的 java 小程序集成到我的 reactjs 应用程序中。
此外,我想在对话框中将其设为 运行(使用材料 UI)。
我有一个可用的呈现函数,当我单击特定按钮时,会显示对话框。我的 return() 函数的对话框中有关小程序部分的代码如下所示:
<Dialog
ref="dialogAction"
title={this.state.dialogTitle}
actions={customAction}
actionFocus="submit"
modal={this.state.modal}
autoDetectWindowHeight={true}
autoScrollBodyContent={true}
contentStyle={styles.dialogMarvin}>
<applet
type="application/x-java-applet;version=1.6"
width="540"
height="480"
codebase="./marvin"
archive="appletlaunch.jar"
code="chemaxon/marvin/applet/JMSketchLaunch"
legacy_lifecycle={true}
java-vm-args="-Djnlp.packEnabled=true -Xmx512m"
codebase_lookup={false}>
</applet>
</Dialog>
当我 运行 此代码时,对话框按预期显示,第一次时,firefox 询问我是否要激活 java (告诉我它目前正在运行)。看下图:applet ready to be loaded, but allowance asked
但是一旦 java 允许,则不会显示任何内容(只有空白,请看下图:once allowance granted)。如果我检查浏览器中的代码,会发现缺少某些属性。我有这个而不是原始的嵌入代码(缺少存档、代码库和其他一些):
<applet
type="application/x-java-applet;version=1.6"
data-reactid=".0.$=12:0.0.2.2.0.$=10.0.1.0"
height="480"
width="540">
</applet>
显示了一些信息,但我还不明白。
你有没有试过在你的 reactjs 中嵌入一个小程序?你有什么建议吗?我做错了什么?
React 在允许随机属性名称方面很挑剔。因此,不是使用 JSX 注入 applet
,而是设置组件的 innerHTML。为此,请使用 React 的 dangerouslySetInnerHTML
:
var dangerousMarkup = {
__html: '<applet.... ' // the whole markup string you want to inject
};
<div dangerouslySetInnerHTML={dangerousMarkup}></div>
这与使用 vanilla javascript 设置 domNode.innerHTML = '<applet...'
基本相同,React 只是让原始标记不加修改地通过。
文档:https://facebook.github.io/react/tips/dangerously-set-inner-html.html
我正在尝试将特定的 java 小程序集成到我的 reactjs 应用程序中。 此外,我想在对话框中将其设为 运行(使用材料 UI)。
我有一个可用的呈现函数,当我单击特定按钮时,会显示对话框。我的 return() 函数的对话框中有关小程序部分的代码如下所示:
<Dialog
ref="dialogAction"
title={this.state.dialogTitle}
actions={customAction}
actionFocus="submit"
modal={this.state.modal}
autoDetectWindowHeight={true}
autoScrollBodyContent={true}
contentStyle={styles.dialogMarvin}>
<applet
type="application/x-java-applet;version=1.6"
width="540"
height="480"
codebase="./marvin"
archive="appletlaunch.jar"
code="chemaxon/marvin/applet/JMSketchLaunch"
legacy_lifecycle={true}
java-vm-args="-Djnlp.packEnabled=true -Xmx512m"
codebase_lookup={false}>
</applet>
</Dialog>
当我 运行 此代码时,对话框按预期显示,第一次时,firefox 询问我是否要激活 java (告诉我它目前正在运行)。看下图:applet ready to be loaded, but allowance asked
但是一旦 java 允许,则不会显示任何内容(只有空白,请看下图:once allowance granted)。如果我检查浏览器中的代码,会发现缺少某些属性。我有这个而不是原始的嵌入代码(缺少存档、代码库和其他一些):
<applet
type="application/x-java-applet;version=1.6"
data-reactid=".0.$=12:0.0.2.2.0.$=10.0.1.0"
height="480"
width="540">
</applet>
显示了一些信息,但我还不明白。
你有没有试过在你的 reactjs 中嵌入一个小程序?你有什么建议吗?我做错了什么?
React 在允许随机属性名称方面很挑剔。因此,不是使用 JSX 注入 applet
,而是设置组件的 innerHTML。为此,请使用 React 的 dangerouslySetInnerHTML
:
var dangerousMarkup = {
__html: '<applet.... ' // the whole markup string you want to inject
};
<div dangerouslySetInnerHTML={dangerousMarkup}></div>
这与使用 vanilla javascript 设置 domNode.innerHTML = '<applet...'
基本相同,React 只是让原始标记不加修改地通过。
文档:https://facebook.github.io/react/tips/dangerously-set-inner-html.html