将自定义HTML分配给page.content后,如何在PhantomJS中等待页面评估

CompMike

我正在尝试将图像的宽度作为属性添加到自身。我需要将其加载到浏览器中后出现的宽度。我这样做是为了html电子邮件和与Outlook的兼容性。

这是我无法正常工作的代码:

var page = require('webpage').create();
page.viewportSize = { width: 1366, height : 768 };
page.content = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title of Test Website</title></head><body><table><tr style="width: 400px;"><td width="400"><img src="http://placehold.it/1000x400" alt="" class="img"><img src="http://placehold.it/1000x400" alt="" class="img"></td></tr></table></body></html>';

var imagePage = page.evaluate(function() {
        var imgs= document.getElementsByClassName('img');
        for (var i = 0; i < imgs.length; i++) {
            imgs[i].width = imgs[i].width;
        }
    return document.documentElement.outerHTML;
});

console.log(imagePage);
phantom.exit();

这将返回添加了图像宽度属性的页面,但宽度设置为0。经过一些测试,这似乎是由于页面尚未完全加载而发生的。我尝试将代码包装在window.load()中,但似乎不与评估一起运行。这是一个在浏览器中使用相同代码的示例:http : //jsbin.com/suhovabiza/edit?html,js,output

关于加载的任何想法在页面加载后会评估吗?查看PhantomJS文档,可以使用page.open来完成,它具有onLoadFinished回调,但是需要一个URL,在这种情况下,我正在使用字符串。

Artjom B.

通常,您会使用page.open()回调page.content函数等待页面加载,但是由于您实际上是在加载自定义about:blank页面(通过将字符串分配给),因此您可以像这样监听onLoadFinished事件

var page = require('webpage').create();
page.viewportSize = { width: 1366, height : 768 };

page.onLoadFinished = function(){
    page.evaluate(function() {
        var imgs= document.getElementsByClassName('img');
        for (var i = 0; i < imgs.length; i++) {
            imgs[i].width = imgs[i].width;
        }
    });

    console.log(page.content);
    phantom.exit();
};

page.content = '<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title of Test Website</title></head><body><table><tr style="width: 400px;"><td width="400"><img src="http://placehold.it/1000x400" alt="" class="img"><img src="http://placehold.it/1000x400" alt="" class="img"></td></tr></table></body></html>';

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在设计时将自定义类分配给PropertyGridControl.SelectedObject

来自分类Dev

将自定义Wordpress帖子/页面元字段的值分配给JavaScript变量

来自分类Dev

如何在Sitecore中将自定义配置文件分配给自定义域用户

来自分类Dev

如何将自定义对象分配给bytesArray?3号

来自分类Dev

将自定义方法分配给WebSocket时如何避免竞争情况?

来自分类Dev

如何将自定义对象分配给bytesArray?3号

来自分类Dev

如何将自定义模型类型分配给淘汰赛 observable?

来自分类Dev

如何在Typescript中定义自定义类型以防止“无法分配给类型...”

来自分类Dev

WooCommerce:在我的帐户页面中将端点分配给自定义模板

来自分类Dev

WooCommerce-在“我的帐户”页面中将端点分配给多个自定义模板

来自分类Dev

PHP高级自定义字段:仅在分配给页面时显示项目

来自分类Dev

WooCommerce-在“我的帐户”页面中将端点分配给多个自定义模板

来自分类Dev

SuiteCRM如何创建类似于“分配给”字段的名为“引用人”的自定义字段?

来自分类Dev

如何通过Orchard CMS中的代码或配方将权限分配给自定义角色?

来自分类Dev

如何创建自定义结构以将数组的内容分配给可用变量?

来自分类Dev

如何在Gnome 3中定义自定义屏幕截图并将其分配给键盘快捷键?

来自分类Dev

使用自定义模块后,在所需文件中定义的子例程将分配给错误的名称空间

来自分类Dev

将自定义函数调用分配给变量

来自分类Dev

无法将自定义类分配给Page View Controller

来自分类Dev

如何在Sun ds中添加自定义属性并将其分配给现有的自定义对象类

来自分类Dev

如何获得一个WordPress的自定义字段值并将其分配给变量?

来自分类Dev

如何在Angular Js中将自定义指令映射到我的html页面

来自分类Dev

SQL将自定义值分配给具有相似ID的那些行

来自分类Dev

将自定义角色分配给Azure Active Directory系统托管身份

来自分类Dev

将自定义对象分配给SSIS中的对象类型变量

来自分类Dev

在Notepad ++中将自定义扩展名分配给语言的语法突出显示

来自分类Dev

将自定义属性分配给动态生成的JS函数

来自分类Dev

C#,DataVisualization.Charting:将自定义标签分配给轴上的值

来自分类Dev

使用回调将自定义fomatter的值分配给jqgrid列

Related 相关文章

  1. 1

    如何在设计时将自定义类分配给PropertyGridControl.SelectedObject

  2. 2

    将自定义Wordpress帖子/页面元字段的值分配给JavaScript变量

  3. 3

    如何在Sitecore中将自定义配置文件分配给自定义域用户

  4. 4

    如何将自定义对象分配给bytesArray?3号

  5. 5

    将自定义方法分配给WebSocket时如何避免竞争情况?

  6. 6

    如何将自定义对象分配给bytesArray?3号

  7. 7

    如何将自定义模型类型分配给淘汰赛 observable?

  8. 8

    如何在Typescript中定义自定义类型以防止“无法分配给类型...”

  9. 9

    WooCommerce:在我的帐户页面中将端点分配给自定义模板

  10. 10

    WooCommerce-在“我的帐户”页面中将端点分配给多个自定义模板

  11. 11

    PHP高级自定义字段:仅在分配给页面时显示项目

  12. 12

    WooCommerce-在“我的帐户”页面中将端点分配给多个自定义模板

  13. 13

    SuiteCRM如何创建类似于“分配给”字段的名为“引用人”的自定义字段?

  14. 14

    如何通过Orchard CMS中的代码或配方将权限分配给自定义角色?

  15. 15

    如何创建自定义结构以将数组的内容分配给可用变量?

  16. 16

    如何在Gnome 3中定义自定义屏幕截图并将其分配给键盘快捷键?

  17. 17

    使用自定义模块后,在所需文件中定义的子例程将分配给错误的名称空间

  18. 18

    将自定义函数调用分配给变量

  19. 19

    无法将自定义类分配给Page View Controller

  20. 20

    如何在Sun ds中添加自定义属性并将其分配给现有的自定义对象类

  21. 21

    如何获得一个WordPress的自定义字段值并将其分配给变量?

  22. 22

    如何在Angular Js中将自定义指令映射到我的html页面

  23. 23

    SQL将自定义值分配给具有相似ID的那些行

  24. 24

    将自定义角色分配给Azure Active Directory系统托管身份

  25. 25

    将自定义对象分配给SSIS中的对象类型变量

  26. 26

    在Notepad ++中将自定义扩展名分配给语言的语法突出显示

  27. 27

    将自定义属性分配给动态生成的JS函数

  28. 28

    C#,DataVisualization.Charting:将自定义标签分配给轴上的值

  29. 29

    使用回调将自定义fomatter的值分配给jqgrid列

热门标签

归档