I’m trying to get some attributes for HTML tags in a web page.
<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>
For example, I need the actual height and width for #headerWrapper and compare it with #musicNav in my PHP script. Since PHP is server-side, I can’t get these attributes so I’m thinking to append Javascript code to calculate these attributes and store them in a JSON file like in this code:
<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>
Then I’d like to read it in the php file that contains my algorithm to extract visual features from web pages. So I need to render the web page with appended Javascript using some browser. I’m using exec to send the new file to Firefox, like this:
exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "http://localhost/Autoextractor/test.html" 2> errors.txt');
And Firefox opens in taskmanager but does not dispaly, the page is not rendered, and my appended Javascript code is not executed.
safe_mode=off – disabled_functions deleted from php.ini and when executing
exec(“whoami”);
The result is my user (note: my user in Administrator group) and I did try wscript with no result.
Does anyone have any idea why it’s not working, or has another solution to get the dimensions of HTML tags?
Simply running a browser won’t allow you to read any data back from it, so forget about using
system.You can use Selenium Webdriver to control a browser with PHP, run JavaScript, then return the result.
When you write your real JavaScript, you will need to fix the syntax errors that appear in the example you included in the question.
Keep in mind that the size of elements on screen will depend on factors such as installed fonts, chosen font size, browser, window size, etc. You can get a result for a browser running on your system, but you can’t depend on it to be a universal result.