在加载前在iframe中添加用户名?

时间:2017-08-01 06:17:51

标签: javascript jquery ruby-on-rails ruby-on-rails-4 iframe

假设我有两个示例网站,例如web_1和web_2。我正在使用iframe将web_1访问到web_2。

现在我的问题是在web_2用户名中可用。我希望在加载之前将此用户名传递给iframe。然后我可以在web_1的应用程序控制器中使用或访问它。这两个网站都是用ruby开发的。

1 个答案:

答案 0 :(得分:2)

“我的应用程序控制器”中的代码将在Web服务器上运行,而不是在浏览器上运行。因此,您无法将父级(web_2)的“用户名”发送到iframe(web_1)的“应用程序控制器”。

但是,您始终可以从父(web_2)向iframe(web_1)的客户端javascipt发送“用户名”。 为实现此目的,请使用HTML5 postmessage api进行客户端javascripts中的通信。

使用iframeEl.contentWindow.postMessage向iframe发送消息。使用window.addEventListener('message')接收iframe内的消息。

实施例:

// In parent javascript(web_2)
window.onload = function () {
	var iframeWin = document.getElementById("da-iframe").contentWindow,
		form = document.getElementById("the-form"),
		myMessage = document.getElementById("my-message");
};

// In iframe javascript (web_1)

function displayMessage (evt) {
	var	message = "I got " + evt.data + " from " + evt.origin;
	document.getElementById("received-message").innerHTML = message;
}

if (window.addEventListener) {
	// For standards-compliant web browsers
	window.addEventListener("message", displayMessage, false);
}
else {
	window.attachEvent("onmessage", displayMessage);
}

相关问题