2011-01-25 53 views
4

我写文本使用document.write的Chrome扩展页面,但没有应用相关的自定义CSS:CSS没有被应用到文件撰写文本

<!DOCTYPE html> 
<html> 
<head> 
    <title>TITLE GOES HERE</title> 
    <link rel="stylesheet" href="css/popup.css" type="text/css" /> 
</head> 

<body> 
    <script type="text/javascript"> 
     ... 
     function showFolder(folder) { 
      console.debug('FOLDER: '+folder.title); 
      document.write('<p>'+folder.title+'<br></p>'); 
     } 
    </script> 

</body> 
</html> 

的CSS很简单,只是为了调试:

p { 
color: red; 
} 

我可以得到它,如果我把功能showFolder里面的样式表的链接工作,但不能做到这一点的正确方法。我正在学习jscript/CSS,所以答案可能是补救措施。问题在jscript,CSS或两者?

+1

你在哪里调用`showFolder`?你有另一个样式表可能会冲突并覆盖样式吗?我测试了你在这里的功能,如果你在函数声明之后调用`showFolder`而不是``` – 2011-01-25 03:45:23

+0

showFolder从另一个函数(...)中调用,它读取Chrome书签中的文件夹(基本上是'读取书签树' - >'如果item是文件夹,则通过showFolder显示文件夹的名称)。只是为了踢我移动showFolder声明之前......功能,但问题依然存在。 – hideyho 2011-01-25 04:11:32

回答

3

使用innerHTML。

<div id="towrite"></div> 

那么您可以在写这样的:

div=document.getElementById('towrite'); 
div.innerHTML = '<p>'+folder.title+'<br></p>'; 
0

我不是JavaScript的高手......我主要使用jQuery ..但是试试这个,一种是有道理的:

<!DOCTYPE html> 

名称在这儿

<script type="text/javascript"> 
    ... 
    function showFolder(folder) { 
     console.debug('FOLDER: '+folder.title); 
     document.write('<p>'+folder.title+'<br></p>'); 
    } 
</script> 

<link rel="stylesheet" href="css/popup.css" type="text/css" /> 

编辑:

所以上面没有工作,但我只是想了解另一种解决方案。你什么时候真的在调用这个函数?尝试把它放在<body onLoad="functionnamehere()">

不知道,如果可行,但试试看。

+0

感谢您的回复 - 将样式表链接移出头部并在脚本无法工作之后。 – hideyho 2011-01-25 03:43:23

+0

再次检查我的帖子 – criticerz 2011-01-25 15:03:18

0

如果您运行document.write()的页面加载完毕后(可能是直接从脚本的页面上打电话给你showFolder调用之前),那么文本将按照您的预期写入文档。

但是,如果在加载页面后调用document.write,就像在事件处理程序中一样,您将会编写一个全新的页面。这通常不是你想要的。

取而代之,按照Zoltan的建议设置空div的innerHTML属性。