如何包含来自其他网站的HTML内容?我可以访问这两个站点

时间:2009-08-19 08:04:02

标签: asp.net

我有一个使用DNN(DotNetNuke)作为内容管理系统的网站。我正在使用其他网站进行活动注册。我给他们发了我的模板;它显示了基础知识,包括一个包含许多不同项目的悬停菜单。

问题是 - 当我使用DNN更新我网站上的菜单时,我需要使用我的模板在网站上反映它 - 我不必向他们发送新文件。任何人都有关于如何处理这个问题的建议吗?

我不想发送事件提供程序的所有DNN DLL以及我的数据库登录信息以呈现菜单。

我在我的网站上创建了一个类似'menu.aspx'的页面 - 这会生成HTML格式的菜单,但是它有像我之前要删除的标签,然后再将它们提供给它们。

最佳方法是什么?我是否需要使用XMLHttp编写自定义服务器控件?我可以在Javascript中完成这个吗?

任何建议都非常感谢。

谢谢!

3 个答案:

答案 0 :(得分:2)

如果两个站点都托管在同一个域(例如site1.domain.com和site2.domain.com),则可以使用JavaScript和XmlHttpRequest将代码从一个站点插入另一个站点。否则,Same Origin Policy会阻止您使用AJAX。

如果他们不在同一个域名但您可以访问他们网站上的页面,那么您只需在您的网站上添加一个JS脚本:

<script type="text/javascript" src="http://yoursite.com/code.js"></script>

在JS中,只需document.write()页面上的内容即可。这样,您就可以轻松更改其网站上的页面内容,而无需向他们发送新文件。

最后,您还可以在其网站上使用iframe,指向您的网页。

答案 1 :(得分:0)

我不是网络专家,所以不要开枪。

难道你不能只将他们的注册表格放入DNN的iFrame中吗?

答案 2 :(得分:0)

编辑:正如文森特·E所指出的那样,只有当他们在同一个领域时,这才有效 - 我的不好。

如果你不愿意或不能使用框架,那么我会在你的DNN服务器上设置一个ashx来渲染菜单(如果你在用户控件中得到它更好,因为你可以实现它和Render直接到输出流),然后从事件页面调用Ajax,直接将其插入DOM。

这是一个基于jquery的快速和hacky事件页面结尾的例子:

<script type="text/javascript">

function RenderMenu(data)
{
    $('#Menu').html(data);
}

$(document).ready(function() {
        $.ajax({
            type : 'GET',
            url : 'http://localhost/AjaxHandlers/Menu.ashx',
            data : '',
            success : RenderMenu,
        });
    });

</script>

您需要一个空白的div,其中包含您希望菜单所在页面上的ID“菜单”,但除此之外您还可以去。

如果出于某种原因无法以孤立的方式获取菜单HTML,那么您需要在RenderMenu中进行一些文本处理,但它仍然可以。