Reputation:
I have a page with a few links and a div, on the same page that I will load other content into. Some of that content is google visualizations charts.
Just as a test, I popped in the google line chart code. The page loads well on it's own, but when I try to load it into div (using jQuery), it doesn't work. Firefox says transfering data from google.com and does nothing, and IE 6 has a JS error saying google
is undefined.
I don`t see why this would be a problem, but the page is on an intranet...if this helps troubleshooting.
Thanks for any and all help in advance..
Here is the code that loads the mainContent.html file into the div.
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#A2W").click(function(){
$("#loadContent").load("mainContent.html");
});
});
</script>
Contents of the mainContent.html
<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["linechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Year');
data.addColumn('number', 'Sales');
data.addColumn('number', 'Expenses');
data.addRows(4);
data.setValue(0, 0, '2004');
data.setValue(0, 1, 1000);
data.setValue(0, 2, 400);
data.setValue(1, 0, '2005');
data.setValue(1, 1, 1170);
data.setValue(1, 2, 460);
data.setValue(2, 0, '2006');
data.setValue(2, 1, 860);
data.setValue(2, 2, 580);
data.setValue(3, 0, '2007');
data.setValue(3, 1, 1030);
data.setValue(3, 2, 540);
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, {width: 400, height: 240, legend: 'bottom', title: 'Company Performance'});
}
</script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>
Upvotes: 0
Views: 1850
Reputation: 35031
Trying to stuff an entire HTML page into a div, which is already part of an HTML page, is a recipe for disaster. You'll finish up with the browser trying to work out what to do with all the things that are in the wrong place. Take the <head> element you just inserted, for example - should it try to move it up? It can't stay where it is, as that makes no sense. If it moves it under the original <html>, should it replace the existing <head> element?
Then what about the <body> It's already got a <body>; should it throw that away? Ah, but it can't because then it throws away the <body> inside the <html> inside the <div>...
Suffice to say that a browser's behaviour when you do something like this is completely undefined, and it probably just throws its hands up in despair and does nothing.
Upvotes: 1