Javascript 动态地将HTML插入另一个网页
假设我拥有两个网站,A和B。我可以访问网站A的源代码,但不能访问网站B的源代码,尽管它是由我工作的同一个组织开发的,但由不同的部门开发,该部门不会与我们共享源代码 当用户从网站a浏览到网站B时,我想在网站B中插入一些HTML,链接回网站a。类似于facebook、twitter等提供的插件 我明白我可以通过两种方式做到这一点: 第一种方法:使用javascript 我要求B网站上的开发人员包括一个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
和我的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是否可以完成这项工作。顺便说一句,我修改了我的答案。这是一个评论,不是答案。这并没有提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。