Javascript 动态地将HTML插入另一个网页

Javascript 动态地将HTML插入另一个网页,javascript,dom,web-applications,iframe,Javascript,Dom,Web Applications,Iframe,假设我拥有两个网站,A和B。我可以访问网站A的源代码,但不能访问网站B的源代码,尽管它是由我工作的同一个组织开发的,但由不同的部门开发,该部门不会与我们共享源代码 当用户从网站a浏览到网站B时,我想在网站B中插入一些HTML,链接回网站a。类似于facebook、twitter等提供的插件 我明白我可以通过两种方式做到这一点: 第一种方法:使用javascript 我要求B网站上的开发人员包括一个和我的javascript代码标记。在我的javascript代码中,我访问网站B上托管页面的DOM

假设我拥有两个网站,A和B。我可以访问网站A的源代码,但不能访问网站B的源代码,尽管它是由我工作的同一个组织开发的,但由不同的部门开发,该部门不会与我们共享源代码

当用户从网站a浏览到网站B时,我想在网站B中插入一些HTML,链接回网站a。类似于facebook、twitter等提供的插件

我明白我可以通过两种方式做到这一点:

第一种方法:使用javascript 我要求B网站上的开发人员包括一个
和我的javascript代码
标记。在我的javascript代码中,我访问网站B上托管页面的DOM,并在div“fromWebsiteA”中创建子元素。这是大多数社交网站为想要在其网站上放置Pin-It(Pinterest)或Digg-It或任何按钮的网站发布者提供的功能

第二种方法:使用iFrame 我给他们一个iframe,我的内容将在其中加载。就像facebook就像插件一样

我的问题是:

1) 我的思路对吗

2) 还有第三种技巧吗


3) 抱歉,如果我在最后一个问题上听起来很愚蠢,因为我知道这涉及到安全威胁,但是我有没有办法在不涉及站点B的开发团队的情况下将HTML插入站点B?

首先你必须知道你来自站点a。当你从站点a浏览到站点B时,您必须使用参数(
)或使用表单来调整链接

要在网站B上检测/读取它是否来自网站A,您需要插入自定义JS。在这里,您应该阅读散列

var recognizeText = "from=websiteA";
if( location.hash.indexOf( recognizeText ) == -1 ) { return; /*didnt come from websiteA */ }

// We came from website A, I dont know if you want to reset the hash (should the link be visible if you browse through websiteB, all the time..? )
// Then it would be more convenient to add a hash because that you can replace without pagerefreshing (I noticed that setting location.search = "" does refresh)

$("fromWebsiteA").style.display = "block";
$("fromWebsiteA").innerHTML = "<a href='www.websiteA.com'>Go back</a>"
var recognizeText=“from=websiteA”;
if(location.hash.indexOf(recognizeText)=-1){return;/*不是来自websiteA*/}
//我们来自网站A,我不知道你是否想重置散列(如果你一直浏览网站B,链接是否应该可见?)
//然后添加散列会更方便,因为您可以在不刷新页面的情况下进行替换(我注意到设置location.search=“”会刷新)
$(“fromWebsiteA”).style.display=“block”;
$(“fromWebsiteA”).innerHTML=“”

我不会尝试使用iFrame。我不确定您是否可以从iframe中检测到上一页。

我认为正确的方法是让Web站点B开发人员编写一个代码,检查标题中的
http\u referer
,然后相应地显示您的小部件(或您所称的任何东西) 另外,存储一个cookie是明智的,这样当用户浏览网站时,他们可以继续显示小部件


另一种方法是使用
GET
变量,比如
?from=websiteA
或其他什么,而不是检查
http\u referer

,我也认为iFrame的速度不太快。我甚至不确定iFrame是否可以完成这项工作。顺便说一句,我修改了我的答案。这是一个评论,不是答案。这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。