java - 使用 deployJava.runApplet 定位特定元素

标签 java javascript css applet

经过多年成功维护一个使用旧的小程序:

<script src="foo.js"></script> 

嵌入Java小程序的方法,我们捂着耳朵唱“啦啦啦!”了。

是时候使用了:

deployJava.runApplet()

当我使用点击处理程序触发此方法时(此处通过 jQuery 在按钮上使用事件监听器,但这并不重要):

$('#button').click(function() {
  deployJava.runApplet(attributes, parameters, version);
});

...它删除整个现有文档并用小程序替换它。我只需要知道如何将特定的 DOM 元素定位为小程序的容器,这样我的页面就不会被删除。

它似乎是一个我可以以 target: someElement 形式传递的属性,其中“someElement”是 DOM 对象或元素的 ID 作为字符串。但遗憾的是,我找不到此类属性的文档。

为了完整起见,以下是传递的内容:

/*here is where I imagine there might be an applicable attribute */
var attributes = {
  name: "SomeName",
  code: "some.class",
  archive: "some.jar",
  width: 640,
  height: 400
};

var parameters = {
  someParameter: someValue
};

var version = "1.5";

我可以document.write 重建文档所需的一切,但我相信你们都能想象到这种前景对我来说是多么可怕。

如有任何指点,我们将不胜感激。

最佳答案

作为 Christophe Roussy 的替代品您可以在运行 deployJava.runApplet 时覆盖 document.write 的解决方案。

像这样:

function docWriteWrapper(func) {
    var writeTo = document.createElement('del'),
        oldwrite = document.write,
        content = '';
    writeTo.id = "me";
    document.write = function(text) {
        content += text;
    }
    func();
    writeTo.innerHTML += content;
    document.write = oldwrite;
    document.body.appendChild(writeTo);
}

然后:

docWriteWrapper(function () {
    deployJava.runApplet(attributes, parameters, "1.6");
});

有点老套,但很有魅力;)

关于java - 使用 deployJava.runApplet 定位特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517790/

相关文章:

javascript - CKEditor 从 Rails 中的跨度类中剥离样式元素

html - CSS Sprite 重复图像

css - 对输入范围的一部分进行着色

java - JOOQ批量删除ID列表的记录

java - 使用Spring在Rest API中返回实体

javascript - 在javascript中将文件/目录结构转换为 'tree'

javascript - Redux 状态未初始化为初始状态

javascript - 无法按预期运行 Javascript

java - Apache CSVParser 不工作

java - JFrame Eclipse 'add' 命令错误