2012-07-01 164 views
0

我试图在网页中获取HTML标签的一些属性。PHP - 获取HTML标签的尺寸

<html> 
<head> 
    <title>test page</title> 
</head> 
<body> 
    <div id="header" class="clearit" role="banner"> 
    <div id="headerWrapper"> 
     <ul id="primaryNav" role="navigation"> 
     <li id="musicNav" class="navItem"> 
      <a href="/music" class="nav-link">Music</a> 
     </li> 
     <li id="listenNav" class="navItem"> 
      <a href="/listen" class="nav-link">Radio</a> 
     </li> 
     <li id="eventsNav" class="navItem"> 
      <a href="/events" class="nav-link">Events</a> 
     </li> 
     <li id="chartsNav" class="navItem"> 
      <a href="/charts" class="nav-link">Charts</a> 
     </li> 
     <li id="communityNav" class="navItem"> 
      <a href="/community" class="nav-link">Community</a> 
     </li> 
     <li id="originalsNav" class="navItem"> 
      <a href="http://originals.last.fm" class="nav-link">Originals</a> 
     </li> 
     </ul> 
    </div> 
    </div> 
</body> 
</html> 

例如,我需要#headerWrapper实际高度和宽度,并与#musicNav在我的PHP脚本进行比较。由于PHP是服务器端的,我不能让这些属性,所以我想追加Javascript代码计算这些属性,并想在这个代码他们在一个JSON文件存储:

<script type="text/javascript"> 
document.ready(function() { 
    var JSONObject= { 
    "tagname":"headerWrapper", 
    "height":$("#headerWrapper").height(), 
    "width":$("#headerWrapper").width() 
    }, 
    { 
    "tagname":"musicNav", 
    "height":$("#musicNav").height(), 
    "width":$("#musicNav").width() 
    } 
    }); 
}); 
</script> 

然后我会喜欢在包含我的算法的php文件中读取它以从网页中提取视觉特征。所以我需要使用一些浏览器使用附加的Javascript呈现网页。我使用exec来新文件发送到Firefox,像这样:

exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "http://localhost/Autoextractor/test.html" 2> errors.txt'); 

和Firefox在任务管理器打开,但不dispaly页面不呈现,和我的附加Javascript代码是未执行

safe_mode = off - disabled_functions从php.ini中删除并执行时 exec(“whoami”); 结果是我的用户(注:我的用户在管理员组中),我尝试了wscript,但没有任何结果。

有没有人有任何想法,为什么它不工作,或有另一种解决方案来获得HTML标签的维度?

+0

你真的需要知道服务器端的尺寸吗?写一些JS来处理客户端的所有事情是不够的吗? – Sirko

+0

HTML标签的尺寸很大程度上取决于您渲染的屏幕尺寸。考虑'

'。你为什么需要这样做? – Eric

回答

4

只需运行浏览器将不允许您从中读取任何数据,因此请勿使用system

您可以使用Selenium Webdriver用PHP控制浏览器,运行JavaScript,然后返回结果。

当您编写真正的JavaScript时,您需要修正问题中包含的示例中出现的语法错误。

请记住,屏幕上元素的大小取决于诸如安装的字体,所选字体大小,浏览器,窗口大小等因素。您可以获得运行在系统上的浏览器的结果,但可以取决于它是一个普遍的结果。

+0

我想给你一个网络高五,因为你不知道你有多帮助我再次感谢 –

0

“是否有另一种获取HTML标签的维度的解决方案?”

Firebug/Inspect有问题,它会通过一些简单的操作为您提供补偿。

如果你想以编程的方式在控制台中运行你的代码,尽管你仍然需要firebug/Inspect来找到正确的选择器(这真的不需要自动执行任何操作)。试图记录下所有......好吧,这听起来像你试图保持一个数据库 ......也许你应该设置一个。

这可能是一个问题,您需要添加更多的上下文才能获得有用的响应。