Javascript 如何访问用户选择的web地址的DOM

Javascript 如何访问用户选择的web地址的DOM,javascript,Javascript,我需要做bookmarklet所做的事情,但是直接从我的页面开始 我需要提取给定url的网页的document.title属性 假设一个用户在www.google.com中输入,我希望能够以某种方式在iframe中调出google.com,然后访问document.title属性 我知道bookmarklets(从书签栏运行的JavaScript)可以访问用户所在的任何站点的document.title属性,然后将该信息发送到服务器 这基本上就是我想要做的,但不需要使用bookmarklet就可

我需要做bookmarklet所做的事情,但是直接从我的页面开始

我需要提取给定url的网页的document.title属性

假设一个用户在www.google.com中输入,我希望能够以某种方式在iframe中调出google.com,然后访问document.title属性

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


这基本上就是我想要做的,但不需要使用bookmarklet就可以直接从我的网页上完成。

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

下面是基本的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;
}
?>


演示:

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

下面是基本的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;
}
?>

演示:根据 您可以使用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读取文件内容,并执行搜索标记的相同逻辑

尝试根据以下内容搜索

您可以使用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读取文件内容,并执行搜索标记的相同逻辑


尝试搜索

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

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

可能重复的我希望会有一个“黑客围绕”…bookmarklet可以在任何页面上运行…这使它们在某种程度上变得强大…但要在任何网站上运行这种能力…用户必须将其拖放到书签中…如果有一个黑客模仿这一点。可能重复的我希望会有一个“黑客围绕”…bookmarklet可以在任何页面上运行…这使它们在某种程度上变得强大…但要在任何网站上运行这种功能…用户必须将其拖放到书签中…如果有黑客可以模仿这一点的话。我希望会有“黑客攻击”…bookmarklet可以在任何页面上运行…这使它们在某种程度上变得强大…但要在任何网站上运行这种功能…用户必须将其拖放到书签中…如果有黑客可以模仿这一点的话。我希望会有“黑客攻击”…bookmarklets可以在任何页面上运行…这使它们在某种程度上变得强大…但要在任何网站上运行这种功能…用户必须将其拖放到书签中…如果有黑客可以模仿这一点的话。谢谢,我希望找到一个.js解决方案…但很可能我必须访问服务器。谢谢,我希望找到一个.js解决方案…但很可能我必须点击服务器。