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

Posted

技术标签:

【中文标题】加载前在 iframe 中附加用户名?【英文标题】:Appending username in Iframe before loading? 【发布时间】:2018-01-07 20:56:51 【问题描述】:

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

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

【问题讨论】:

jQuery/javascript: accessing contents of an iframe的可能重复 【参考方案1】:

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

但是,您始终可以将“用户名”从父级 (web_2) 发送到 iframe(web_1) 的客户端 javascipt。 为此,请使用 html5 postmessage api 在客户端 JavaScript 中进行通信。

使用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);

【讨论】:

以上是关于加载前在 iframe 中附加用户名?的主要内容,如果未能解决你的问题,请参考以下文章

将参数附加到单击后在 DOM 中加载的 iframe

检测 iframe 加载错误

如果用户空闲,请重新加载页面或iFrame

将事件处理程序附加到在IFrame中呈现的HTML

当用户在 iframe 中导航时,强制 iframe 的父页面自动滚动到顶部?

加载时在 iframe 内容中添加客户端不显眼的验证规则