-2

可能重复:
可以执行 JavaScript 的服务器端浏览器
在 PHP 中执行 javascript

如何解析包含 JavaScript 代码的 HTML,如果可能的话,最好使用 PHP 脚本。

举个例子:

<a href="javascript:link(10, true);">link</a>

应替换为 JavaScript 函数返回的适当值,例如

<a href="http://www.example.com">link</a>

一个更复杂的例子是一个保存的 facebook html 页面,其中充斥着大量的 javascript 代码。

总结:用html+javascript返回一个页面的DOM

4

3 回答 3

1

你可以给这个链接一个ID。并不是说这个解决方案是javascript,jQuery。

所以给链接一个 ID 或类。

$('.link').each(function() {
    var functionName = 'link';
    var start = $(this).attr('href');
    remove = start.replace('javascript:', ''), 
        get = remove.replace(new RegExp('^'+functionName+'\(((.+\,?)+)\)\;?', 'g'), function(a, b, c) {
        return c.replace(/[()']/g,'')
    }), args = get.split(",");

    //read settings
    var firstArgument = args[0];
    $(this).attr('href', firstArgument)
});​

请注意,这只是一个示例。

用法:

​&lt;a class="link" href="javascript:link('http://facebook.com')"​&gt;Hi</a>​​​​​​​​​​​​​​​​​​

这将使实际链接http://facebook.com

但是,以这种方式添加新论点很困难,而且并不专业。但这应该做你想做的,我只是不知道你的链接函数实际上没有,所以我没有用布尔值添加参数。当然,这可能会变得更加复杂,您也可以编写一个可以执行此操作的函数,但我只是为您快速编写了这个。

查看示例

于 2012-07-29T17:35:08.040 回答
0

你不能。单击时,javascript:URI 只是调用该函数并让它为所欲为(可能包括在某处导航);他们不期望或使用返回值。在许多用例中,该功能可能根本不会导致任何导航。

于 2012-07-29T17:09:46.370 回答
0

DomDocument 可用于解析 PHP 中的 HTML,包括 JS:http ://php.net/manual/en/class.domdocument.php

您可以通过仅回显 cURL 或 wget(或您使用的任何内容)的输出而不转义 HTML 字符来“渲染”带有 HTML 的 JS。对于外部 JS,您将需要构建一个爬虫,该爬虫将爬取DomDocument script标签并获取适当的 URL 并将其加载到可访问的位置,除非您直接从他们的服务器使用它,但我认为他们不会太高兴关于那个。

编辑:一些评论后我的新答案是:没有

于 2012-07-29T17:18:49.430 回答