iframe风格被网站的css覆盖

时间:2017-03-14 11:56:06

标签: javascript html css iframe

  1. 我为adtech工作。我们使用iframe展示广告,但对于我们展示广告的特定网站,我的iframe高度正在被覆盖。

  2. 覆盖我的CSS样式的样式如下: -

  3. var iframe = createHtmlElement("iframe");          
    setAttributesForElement(iframe, { 'vspace':'0', 'hspace':'0', 'scrolling':'no', 'id':'myIframeId', 'frameborder':'0', 'marginwidth': '0', 'marginheight': '0', 'allowtransparency':'true', } );            
    setStyle(iframe, {'margin':'0px', 'width':'100%', 'height':'100%', 'padding':'0px'} );
    

    1. 我使用javascript动态创建iframe。该网站覆盖了我的CSS。
    2. 03-14 11:46:37.581 9653-9653/info.androidhive.navigationdrawer E/AndroidRuntime: FATAL EXCEPTION: main
      Process: info.androidhive.navigationdrawer, PID: 9653
      java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.navigationdrawer/info.androidhive.navigationdrawer.activity.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
       at android.app.ActivityThread.access$800(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5254)
       at java.lang.reflect.Method.invoke(Native Method)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
      Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
       at android.view.LayoutInflater.createView(LayoutInflater.java:633)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:892)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:802)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
       at info.androidhive.navigationdrawer.activity.MainActivity.onCreate(MainActivity.java:69)
       at android.app.Activity.performCreate(Activity.java:5990)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
       at android.app.ActivityThread.access$800(ActivityThread.java:151) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:135) 
       at android.app.ActivityThread.main(ActivityThread.java:5254) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:372) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
      Caused by: java.lang.reflect.InvocationTargetException
       at java.lang.reflect.Constructor.newInstance(Native Method)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:892) 
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:802) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
       at info.androidhive.navigationdrawer.activity.MainActivity.onCreate(MainActivity.java:69) 
       at android.app.Activity.performCreate(Activity.java:5990) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
       at android.app.ActivityThread.access$800(ActivityThread.java:151) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:135) 
       at android.app.ActivityThread.main(ActivityThread.java:5254) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:372) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
      Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.
       at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:36)
       at android.support.design.widget.CoordinatorLayout.<init>(CoordinatorLayout.java:185)
       at android.support.design.widget.CoordinatorLayout.<init>(CoordinatorLayout.java:179)
       at java.lang.reflect.Constructor.newInstance(Native Method) 
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
       at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
       at android.view.LayoutInflater.parseInclude(LayoutInflater.java:892) 
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:802) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
       at info.androidhive.navigationdrawer.activity.MainActivity.onCreate(MainActivity.java:69) 
       at android.app.Activity.performCreate(Activity.java:5990) 
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
       at android.app.ActivityThread.access$800(ActivityThread.java:151) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
       at android.os.Handler.dispatchMessage(Handler.java:102) 
       at android.os.Looper.loop(Looper.java:135) 
       at android.app.ActivityThread.main(ActivityThread.java:5254) 
       at java.lang.reflect.Method.invoke(Native Method) 
       at java.lang.reflect.Method.invoke(Method.java:372) 
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
      

      所以在上面的代码中,setAttributes和setStyle是我的函数,它接受输入并为html元素设置样式adn属性。

      1. 有没有办法避免我的css被覆盖?我试着寻找答案,但不太清楚。

      2. 我可以为我的iframe设置名为instagram-media的类,它解决了问题,但广告放在不同的网站上,所以我可能会再次遇到同样的问题。所以寻找永久的解决方案。

2 个答案:

答案 0 :(得分:4)

我有这样的工作经验,所以在那些情况下我通常会这样做: - 使用&gt;定位您创建的iframe css指针。 - 有没有可能在你的风格上设置!重要标志? - 尝试为iframe创建一个非常长的独特类名。

答案 1 :(得分:0)

你提到添加一个类可以解决问题,但是你担心这个问题,另一个网站使用同一个类并再次编写你的css。

你最好的选择可能只是使用一些非常模糊的课程?

...一样

类=&#34; YourCompany_iframeCSS_InsertADateHere_AnAlphaNumericStringHere&#34;