2014-03-24 32 views
3

我正在开发一个将按钮注入页面的chrome扩展。点击此按钮后,它将启动一个twitter引导模式。但是,使用twitter引导注入的css会影响页面本身,我只希望它们影响模态div。我怎样才能做到这一点?如何在Chrome扩展内容脚本中确定CSS的范围

谢谢!

回答

1

只有一种正确的方法来做到这一点,它涉及较少

看到这个答案:https://stackoverflow.com/a/14145510/1060487

或者这一个:https://stackoverflow.com/a/15115171/1060487

这两种方法都应该能正常运行。

我已经尝试了其他1个解决方法:

http://css-tricks.com/saving-the-day-with-scoped-css/

不Chrome浏览器的工作,但有一个polyfill here,它并没有真正似乎工作那么好......

检查这里的支持:http://caniuse.com/style-scoped

摘要:少路线似乎是最好的解决办法现在...

1

我最近创建了Boundary,一个CSS + JS库来解决这样的问题。边界创建与现有网页的CSS完全分离的元素。

以创建一个对话框为例。安装分界后,您可以在您的内容脚本中#yourDialogID

var dialog = Boundary.createBox("yourDialogID", "yourDialogClassName"); 

Boundary.loadBoxCSS("#yourDialogID", "style-for-elems-in-dialog.css"); 

Boundary.appendToBox(
    "#yourDialogID", 
    "<button id='submit_button'>submit</button>" 
); 

Boundary.find("#submit_button").click(function() { 
    // find() function returns a regular jQuery DOM element 
    // so you can do whatever you want with it. 
    // some js after button is clicked. 
}); 

元素不会被现有的网页受到影响做到这一点。

希望这会有所帮助。如果您有任何问题,请告诉我。

https://github.com/liviavinci/Boundary

+0

我试图用边界,我想从一个Chrome扩展contentscript内打开Twitter的引导模式。 显示的模式不是模式,因为我可能习惯了(在当前网页上),但只是作为添加iframe的网页的一部分。 任何想法我做错了什么? –

+0

@TorstenFeld你能更具体吗?也许一些代码示例和截图?随时给我发电子邮件[email protected] –

相关问题