Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从另一个站点更改页面_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 从另一个站点更改页面

Javascript 从另一个站点更改页面,javascript,php,jquery,html,Javascript,Php,Jquery,Html,对不起,这个问题的名字很模糊,我不知道怎么表达 我已经建立了一个PHP引擎来解析网页,提取电话号码、地址等 这将被客户端用来通过简单地输入一个新的联系人web地址来填充地址簿 我遇到的问题是可用性: 目前,脚本只是将每个项目(固定电话号码、传真等)添加到不同的列表框中,用户选择正确的项目-从可用性的角度来看,这是一项艰巨的工作(不查看站点,您如何知道哪个是正确的联系人号码) 所以我的问题(最后!) 如何实现的功能 在其他人的网站上(我写这个功能没有问题) 为清晰起见** 我想在我的网站上显示其

对不起,这个问题的名字很模糊,我不知道怎么表达

我已经建立了一个PHP引擎来解析网页,提取电话号码、地址等

这将被客户端用来通过简单地输入一个新的联系人web地址来填充地址簿

我遇到的问题是可用性:

目前,脚本只是将每个项目(固定电话号码、传真等)添加到不同的列表框中,用户选择正确的项目-从可用性的角度来看,这是一项艰巨的工作(不查看站点,您如何知道哪个是正确的联系人号码)

所以我的问题(最后!)

如何实现的功能

在其他人的网站上(我写这个功能没有问题)

为清晰起见** 我想在我的网站上显示其他人的网站(例如他们的联系人页面),但我想突出显示我找到的项目(例如,在我的php脚本找到的电话号码周围添加一个标记)

我知道,要显示一个不在您的域中的网站,将使用iFrame,但由于我需要更改页面内容,这是无用的

我还考虑编写一个可以在该页面上运行的bookmarklet,但这意味着要用javascript重新编写我的解析引擎,并公开我的一些技巧以使其准确

因此,我只需通过cURL拉取页面,然后尝试匹配具有相对URL的javascript文件、css文件等

有人知道如何最好地实现这一点吗?以及我可能遇到的任何陷阱

我曾经尝试过使用简单的HTMLDOM解析器——但要获得一致性是很困难的,我也不知道有两组标记、主体标记等会如何影响站点

如果有人曾经做到这一点,并能告诉我他们使用的工具/通用方法,我将永远感激

请注意-我非常精通谷歌和堆栈溢出,并已看过那里第一

理想的HTML解决方案 处理任意站点的相对路径的最简单方法是使用base href标记指定默认的相对位置(只需使用文件名之前的url,例如url的
。这应该位于头块的顶部)

然后,您可以通过查找相关部分并将它们包装在自己的标记(如span)中来更改站点。对于这些标记的格式,最简单的方法是添加
样式
属性,但您也可以尝试在
中插入
标记

当然,您还需要考虑没有
标记的制作糟糕的网页。您可以将源代码包装到一组新的标记中,或者只添加基本标记和样式标记,希望浏览器能够解决问题

您可能还希望使其具有交互性,因此您还应使用某种链接将其包装起来,理想情况下,您将插入一些javascript以通过ajax处理其操作。您还应在页面顶部插入自己的标题,可能在顶部浮动,以便他们知道他们正在使用您的工具。请记住,一些高级ced页面可能会与您的更改发生冲突(尽管在这些情况下,您可能会有一个链接说“此页面是否显示不正确?”以将用户带到原始的基本列表框页面作为备份)

更稳健的解决方案 显然,上述方法存在很多潜在的问题,即使它是理想的。如果您想确保健壮性,并避免试图更改的页面上的自定义javascript和css出现任何问题,您可以使用类似于基于文本的浏览器(如lynx)中使用的算法来一致地重新格式化页面应用你的算法突出显示页面的相关部分,你也可以应用你自己的格式,而不会有错误显示的风险。这样你就可以很好地构建页面框架并维护你的界面

这样做的问题是,您失去了原始页面的实际外观,但您应该保持数字和地址周围的上下文,这是很重要的。然后,您还可以使用一些动态javascript将用户连续带到每个数字和地址,以改善用户体验。基本上,这就是rigoro让您完全控制用户体验,但您会失去网站的原始外观,这可能会也可能不会让您的用户感到困惑


就我个人而言,我会选择第二种方法,但我不确定以前是否有人创建过这样的解析器。如果没有,最简单的方法就是剥离标记,将其作为纯文本。下一种最简单的方法是将其转换为一些简单的文本标记格式,如markdown,然后将其转换回html。这样,您就可以保留一些basic布局,如标题、斜体和粗体文本等

你肯定不想有嵌套的body标签。这可能会起作用,但可能会弄乱你的格式,并且在不同浏览器之间不一致


以下是我在谷歌快速搜索后找到的资源:

还有其他html标记脚本,但这是我发现的少数几个脚本中最强大的一个。我仍然不确定它是否可以处理格式不好的页面或具有高级格式的页面,请自己尝试一下


虽然html转换器有很多降价功能,但事实上,您可以很容易地自己制作一个自定义转换器来满足您的个人需求。

您肯定不会对CSS或JS感兴趣,只是电话号码的正则表达式?
文件获取内容
应该足以获取标记?抱歉我将回答一个问题以获得澄清谢谢你的回答-非常彻底-如果没有其他人提出更好的答案,那么我会将其标记为已接受-我探索了基础href-但这方面存在许多问题。我会