Right, I think I know what you mean. I can't think of an easy way to do it, or any easy way to pass the parameter, other than using the query string. This would be very easy in PHP, but in case you can't use it, try using this script in page2 to write the iframe or frameset.
Iframe:
<script type="text/javascript">
var url = String(window.location);
var match = url.match(/[?&]article=([^&#?]*)/)
var article = match[1]
document.write('<iframe name="article" src="'+article+'.html" height="400" width="400"></iframe>')
</script>
Frameset:
<script type="text/javascript">
var url = String(window.location);
var match = url.match(/[?&]article=([^&#?]*)/)
var article = match[1]
document.write('<frameset rows="100,*" name="news_frame"><frame name="news" src="article_header.html"><frame name="article" src="'+article+'.html"></frameset>')
</script>
Obviously, seen as the script writes the iframe/frameset itself, you'll need to change it to what you want to use.
Then on page1 you can use, taking it from go2battle:
<input type="button" onClick="window.open('page2.html?article=page3','News','width=400,height=400,scrollbars=yes,left=1,top=1')">
Or convert the link to text:
<a href="#" onClick="window.open('page2.html?article=page3','News','width=400,height=400,scrollbars=yes,left=1,top=1')">Link</a>
Replace page3 in your links with the page you want to load inside page2 (note that '.html' is automatically appended to the end).
Edit: Missed an ending tag