如何访问用户所选网址的 DOM

How to access the DOM of a user selected web address

本文关键字:DOM 用户 何访问 访问      更新时间:2023-09-26

>我需要做书签做的事情,但直接从我的页面。

我需要在给定该网址的情况下拉取网页的 document.title 属性。

因此,假设用户键入 www.google.com,我希望能够以某种方式在 iframe 中拉起 google.com 而不是访问 document.title 属性。

我知道书签(从书签栏运行的javacript(可以访问用户所在的任何站点的document.title属性,然后将该信息ajax到服务器。

这本质上是我想做的,但直接从我的网页不使用书签。

根据这个问题您可以使用PHP实现这一点,请尝试以下代码:

    <?php
function getTitle($Url){
    $str = file_get_contents($Url);
    if(strlen($str)>0){
        preg_match("/'<title'>(.*)'<'/title'>/",$str,$title);
        return $title[1];
    }
}
//Example:
echo getTitle("http://www.washingtontimes.com/");
?>

但是,我假设可以使用JS读取文件内容并执行搜索标签的相同逻辑。

尝试在此处搜索

不幸的是,这并不容易。出于安全原因,不允许 JavaScript 访问不在同一域中的框架或窗口的文档对象。这种事情必须通过对后端PHP脚本的请求来完成,该脚本可以获取请求的页面,通过DOM并检索<title>标签中的文本。如果你没有这种能力,你的要求就会困难得多。

以下是基本的PHP脚本,它将获取页面并使用PHP的DOM扩展来解析页面的标题:

<?php
$html = file_get_contents($_GET["url"]);
$dom = new DOMDocument;
$dom->loadXML($html);
$titles = $dom->getElementsByTagName('title');
foreach ($titles as $title) {
    echo $title->nodeValue;
}
?>

演示:http://www.dstrout.net/pub/title.htm

您可以编写一个服务器端脚本,该脚本将为您检索页面(即使用 curl(并解析 dom 并以 json 形式返回所需的属性。 然后用 ajax 调用它。