Добавить javascript в атрибут iframe src

54
4

У меня есть функция javascript, которая вызывается после успешного вызова jQuery AJAX.

 function launchTool(user, pass, name, hash, port) 
{
var iframe = jQuery('<iframe id="AppletFrame" src="http://www.mysite.com/applications/applet.html"></iframe>');
var $dialog = jQuery('<div></div>');
$dialog.append(iframe);
$dialog.dialog({
title: name,
width: '425',
height: '400',
modal: true,
close: function () {
iframe.attr("src", "");
}
});
}

Это открывает java-апплет, который находится в iframe, который отображается в диалоговом окне jQuery. Это отлично работает, но теперь мне нужно передать значения в java-апплет. Это сообщение выглядит точно, что мне нужно.

Поэтому я попробовал это:

function launchTool(user, pass, name, hash, port) 
{

var iframe = jQuery('<iframe id="AppletFrame" src="about:blank"></iframe>');

var doc = document.getElementById('AppletFrame').contentWindow.document;
doc.open();
doc.write('<script>');
doc.write('var attributes = {code:"com.test.MyApplet", width:400, height:375};');
doc.write('var parameters = {jnlp_href: "http://'+window.location.host+'/applications/MyConfigApplet.jnlp", user: "'+user+'", pass: "'+pass+'", name: "'+name+'", hash: "'+hash+'", port: "'+port+'"};');
doc.write('</script>');
doc.write('deployJava.runApplet(attributes, parameters, "1.6");');
doc.close();

var $dialog = jQuery('<div></div>');
$dialog.append(iframe);
$dialog.dialog({
title: name,
width: '425',
height: '400',
modal: true,
close: function () {
iframe.attr("src", "");
}
});
}

В основном я попытался добавить содержимое applet.html в свой рабочий пример к коду. Я не вижу ошибок, и единственное, что появляется, это пустой iframe. Я думаю, это не относится к атрибуту src. Что я делаю не так?

EDIT: Как было предложено @TheZuck я добавил deployJava.js с:

doc.write('<script src="https://www.java.com/js/deployJava.js"></script>')

Теперь, по крайней мере, я получаю сообщение об ошибке: TypeError: document.getElementById(...) is null

Зачем?

спросил(а) 2013-05-01T22:04:00+04:00 7 лет, 2 месяца назад
1
Решение
88

Я понятия не имею, почему, но ничего не сделаю, чтобы код работал. Я отказался от попыток записать контент в src и решил написать строку запроса для передачи параметров самому аплетту:

var iframe = jQuery('<iframe id="AppletFrame" width="435" height="410" frameborder="0" src="http://myurl.com/applications/applet.php?user='+user+'&pass='+pass+'&name='+name+'&hash='+hash+'&port='+port+'"></iframe>');

Это работает, но не уверен, что это самое элегантное решение.

ответил(а) 2013-05-02T22:57:00+04:00 7 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема