作者elan (me so f**ked up!)
看板Web_Design
标题Re: [问题] Javascript 的问题
时间Thu Aug 10 00:53:10 2006
※ 引述《kenshieh ( )》之铭言:
: ※ 引述《kenshieh ( )》之铭言:
: : 标题: [问题] Javascript 的问题
: : 时间: Wed Aug 9 15:04:28 2006
: : 请问,
: : 假设我有一个 .js 会回传一些用 document.write(); 产生的结果,但我想把这结果
: : 先暂存起来,以便以後的运用,那我要怎麽做呢?
: : 举例如下(以 test.js 为例):
: : <!-- 下面回传一个 document.write('test'); 的结果 -->
: : <script src='test.js'></script>
: : 上面这行会产生 "test" 字串,但我要怎麽做去把 test 暂存於 javascript 的一个变数
: : 里而不是直接产生於网页上呢? 谢谢。
: : --
: : ◆ From: 140.119.164.204
: : 推 alpe:变数 08/09 15:06
: : 推 kenshieh:你好, 我知道用变数, 问题是要怎麽去接它呢? 08/09 15:45
: : 推 grassboy2:在js档里面写个var buffer_test;要用的时候直接存取… 08/09 18:45
: : → grassboy2:先用buffer_test+="test"要读出时再用document.write() 08/09 18:47
: 谢谢 grassboy2 的回答
: 但可能各位还是误解我的意思了
: 我的意思,目前有一个 .js 的档案,但这个档案我是无法去变更它的内容的
: 他的内容很简单,就是一些 document.write();
: 问题来了,我要怎麽用变数去接由 .js 产生的内容呢?
: 下面这个有问题的程式应该可以了解我要的意思。 (以下用 test.js 当范例)
: <!-- 以下是有问题的程式 -->
: <script>
: // 我要如何得到 test.js 产生的内容呢? 且我要放到 cont 这变数中。
: var cont = document.write("<script src='test.js'></script>");
: </script>
我第一次看过这麽奇怪的需求 您的test.js程式设计上就是要写入一些内容至网页
您反而不要这个程式做写入的动作 但又想知道它会写入的内容
'正常'唯一的方法就是改原来的程式阿
既然您都说test.js不能改了 好吧... 那就硬上了:
我是有想到两三个办法, 最简单且最笨的就是依旧让test.js程式写入内容至网页
写入至一个暂时的element中 另外依靠css的display:none让这个element
就算有内容也看不到 (但css功能被关掉时 您可能会看到这些内容忽然出现又消失)
然後把写入的内容抓出来放到变数里 然後再把这个暂时的element拿掉
我粗略写了一下... 在网页的<body>内插入以下的code,
<script type="text/javascript">
window.onload = function() {
// 暂时放内容的element
var holderDiv = document.getElementById('content-holder');
// 这个暂时的element里除了写入的内容, 还有开头的script markup
// 我们只要写入的内容 放进一个top-level的变数cont中
window.cont = holderDiv.innerHTML.replace(/<script\s*.*><\/script>/i,'');
// 然後把这个暂时的element拿掉
document.body.removeChild(holderDiv);
}
</script>
<!-- 这一段markup不要有断行 -->
<div id="content-holder" style="display:none"><script type="text/javascript" src="test.js"></script></div>
就这样 ... 试试看吧!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.131.24.125
※ 编辑: elan 来自: 220.131.24.125 (08/10 01:25)
1F:推 kenshieh:哈 虽然是绕了一圈 但这是个不错的方法 谢谢 elan :) 08/10 12:20
2F:→ elan:其实 你也可以把test.js当成一般文件抓回来 不去执行它 08/10 18:21
3F:→ elan:然後想办法把每个document.write(...)中的字串抓出来 08/10 18:23
4F:→ kong0107:还是直接复制test.js来改吧....XD 08/15 21:32